2014-04-12から1日間の記事一覧

Ruby で labels できるか

次のコードに等価なものを作りたい。 (defun f (a b) (labels ((g (c) (list a b c))) (g 'z))) (f 'x 'y) ; => (X Y Z) 新しい Object にシングルトンメソッドを定義しよう。 def f a, b Object.new.instance_eval { self.define_singleton_method(:g) do |…

do end で引数リストにカッコを付けてはいけない謎の文法環境

Ruby ではメソッドに渡すブロックの表記に do end と {} の2つがあるが、その違いの一つは、do end は引数リストの括弧を省略できるということだ。次のようなテスト用のメソッドを用意して、確かめてみる。 # 渡された引数とブロック引数を配列にして返す。…