【一人 Ruby Advent Calendar 2017】def や class の戻り値【1日目】
一人 Ruby Advent Calendar 2017 1日目の記事になります。
一人 Ruby Advent Calendar 2017 とは
完全に勢いで立てました。
まあなんか Ruby 界隈が盛り上がればいいかなーと
まあ Ruby に関する小ネタみたいなのを簡単な書いてこうかなーと思います。
書き溜めとか特にしないでだらだら書いていこうかと思います。
なんか書いてほしいネタとかあれば Twitter とかで言ってもらえば書きます、多分。
class
や def
の戻り値
さて、まずは簡単なネタから。
Ruby では構文がだいたい式なんですが、class
や def
なんかも式になります。
式ということは当然 class
や def
などにも戻り値が存在します。
class
や module
の戻り値
class
や module
なんかは『一番最後の式』を返します。
p class X 42 end # => 42 p class X ancestors end # => [X, Object, Kernel, BasicObject] p module M self end # => M
def
の戻り値
def
は『定義したメソッドの名前』を Symbol
で返します。
p def hoge end # => :hoge p def foo end # => :foo p def +@ end # => :+@
def
の戻り値を利用して private
や module_function など定義する
def
の戻り値を直接 private
メソッドや module_function
メソッドに渡すことができます。
class X # private メソッドに対して def の戻り値を渡す private def hoge :hoge end def foo hoge end end p X.new.foo # => :hoge module M module_function def hoge :hoge end end p M.hoge # => :hoge
任意のメソッドのみ private
にしたい時などはこういう書き方のほうがすっきりしそうですね。
と、言うような簡単なネタを書いていきたいと思います。
などと思っていたらこんな Advent Calendar がいつの間にか立っておりすごい。