メインプログラムにこれがある場合:
def hi
puts 'hi'
end
self.hi
hi
プライベートなので機能しません。
Ruby のすべてのメソッドがデフォルトで public であることを知りましたが、そうではないようです。なぜですか?
メインプログラムにこれがある場合:
def hi
puts 'hi'
end
self.hi
hi
プライベートなので機能しません。
Ruby のすべてのメソッドがデフォルトで public であることを知りましたが、そうではないようです。なぜですか?
環境でメソッドを定義するのは難しいmain
です。で定義すると、メソッドはデフォルトでプライベートになりますmain
。したがって、プライベートとして使用する必要があります。
def hi
puts 'hi'
end
hi
または明示的に公開します。
def hi
puts 'hi'
end
public :hi
self.hi
「最上位プロシージャ」を除いて、メソッドはデフォルトで public です。トップレベルのプロシージャのように見えるものを定義すると、実際private
には のインスタンス メソッドとして定義されますObject
。
def main_method
p "This is from main_method"
end
public :main_method
class Klass
def initialize
Object.main_method # Or we can simply say main_method as we do in the second exaple
end
end
puts Klass.new
示されているように、オブジェクトの「クラス メソッド」を作成する方法です。プライベートの場合、受信者を指定できません。
デフォルトのようにプライベートの場合、次のように呼び出します。
def main_method
p "This is from main_method"
end
class Klass
def initialize
main_method # With it being private, implicit self only
end
end
puts Klass.new
では、どちらの方法にも利点はありますか?プライベートにする場合は、好みがあるという何らかのコミュニケーションを開発者に送信し、これをパブリック メソッドではなくプライベート メソッドとして使用する必要があると思います。
実際には、私は利点を見ていません。