【一人 Ruby Advent Calendar 2017】def や class の戻り値【1日目】

一人 Ruby Advent Calendar 2017 1日目の記事になります。

一人 Ruby Advent Calendar 2017 とは

完全に勢いで立てました。
まあなんか Ruby 界隈が盛り上がればいいかなーと
まあ Ruby に関する小ネタみたいなのを簡単な書いてこうかなーと思います。
書き溜めとか特にしないでだらだら書いていこうかと思います。
なんか書いてほしいネタとかあれば Twitter とかで言ってもらえば書きます、多分。

classdef の戻り値

さて、まずは簡単なネタから。
Ruby では構文がだいたい式なんですが、classdef なんかも式になります。
式ということは当然 classdef などにも戻り値が存在します。

classmodule の戻り値

classmodule なんかは『一番最後の式』を返します。

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 の戻り値を利用して privatemodule_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 がいつの間にか立っておりすごい。