チェリー本7.7.6一部解説
Ruby のメソッド定義は式になっていて、 メソッド定義が完了するとメソッド名をシンボルとして返します。
これを利用すると、メソッド定義が正常に行われたかどうかを確認したり、メソッド名を後で利用することができます。
def foo
'foo'
end
#=> :foo
この知識を応用すると、 次のようにメソッド定義と同時にそのメソッドをprivateメソッドにすることが可能です。
class User
private def foo
'foo'
end
end
user = User.new
user.foo #=> private method 'foo' called for #<User:0x000000013c144398> (NoMethodError)
・流れ
①fooメソッドが定義される
②シンボル:fooは、その返り値となる
③:fooがprivateメソッドの引数となるため、foo メソッドは private として扱われる。