概要
defの戻り値変更
詳細
defの戻り値が変更され、メソッド名のシンボルを返却するようになった。
(※以前はnilを返却していた)
この変更は
private def hoge # some code end
のような記述を可能にしたい、というのが出発点のようです。
下記が、Rubyのコミッターさんたちのやりとり。
https://bugs.ruby-lang.org/issues/3753
privateを利用するサンプルと、
一部のメソッドをクラス変数の配列に格納するサンプルを作成してみました。
サンプルコード(privateの例)
# encoding: utf-8 class Hoge def public_hoge private_hoge end private def private_hoge "hoge" end puts def private_sample "sample" end end print Hoge.new.public_hoge
出力
private_sample hoge
サンプルコード(メソッドをクラス変数の配列に格納してみた)
# encoding: utf-8 require 'tbpgr_utils' require 'pp' class Hoge @@hoges = [] @@hoges << def hoge puts "hoge" end @@hoges << def hige puts "hige" end def hoges # hoge/higeの命名をリファクタリングなどで命名変更した場合でも # 下記のコードは変更の必要がない @@hoges.each do |hoge| send(hoge) end end def hage "hage" end end Hoge.new.hoges
出力
hoge hige