LoginSignup
0
0

More than 5 years have passed since last update.

Privateメソッドで外部から呼び出せないようにする

Posted at

Privateメソッドの使い方

クラス内でPrivateと記述すると、Private以下に記述したメソッドをクラス外で呼び出すことができない。

class.rb
class Sales
    attr_accessor :name
    def initialize(name)
      @name = name
    end
    def sale(customer,target)
        target_amount_money(target)
        puts "#{@name}は、#{customer}に広告を売った"
    end

    private

    def target_amount_money(target)
        puts "広告目標額は#{target}万円"
    end
end

hiro = Sales.new("hiro")
hiro.sale("見込み客", 200)

#広告目標額は200万円
#hiroは、見込み客に広告を売った

以下のようにクラス外で呼び出そうとすると、エラーになってしまう。

class.rb
class Sales
    attr_accessor :name
    def initialize(name)
      @name = name
    end
    def sale(customer,target)
        target_amount_money(target)
        puts "#{@name}は、#{customer}に広告を売った"
    end

    private

    def target_amount_money(target)
        puts "広告目標額は#{target}万円"
    end
end

hiro = Sales.new("hiro")
hiro.target_amount_money(200)

#ruby-practice.rb:19:in `<main>': private method `target_amount_money' called for #<Sales:0x007fb1e01088c8 @name="hiro"> (NoMethodError)

Railsでよく出てくるけど、 改めて学ぶと理解が増す。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0