読者です 読者をやめる 読者になる 読者になる

Ruby の private メソッドとは

Ruby

Ruby の private メソッドとは『レシーバをつけて呼び出すことができない』メソッドのことである。
Ruby の private メソッドModule#private を使用することで以降に定義したメソッドを private メソッドとして定義する事ができる。

class X
    def test
        # private メソッドはレシーバをつけないで
        # 呼び出すことができる
        private_method + private_method2
        
        # レシーバをつけて private メソッドを呼び出すことはできない
        self.private_method
        # Error: private method `private_method' called for #<X:0x00000001ea29e0> (NoMethodError)
    end

    # private メソッドにしたいメソッドの前に private を置く
    # 以降、メソッドを定義した場合はすべて private メソッドとなる
    private

    def private_method
        "private_method"
    end
    
    def private_method2
        "private_method2"
    end
end

x = X.new
x.test
# => "private_methodprivate_method2"

# レシーバをつけて private メソッドを呼び出すことはできない
x.private_method
# Error: private method `private_method' called for #<X:0x000000020de8f8> (NoMethodError)

基本的には Ruby では自分以外からメソッドを呼び出す場合にレシーバが必要になる。
そのため、private メソッドにすることで『自分以外からメソッドを呼び出すことを制限する』事ができる。