今日の Ruby 落とし穴

2007/09/12 6:31am

Ruby の落とし穴には載っていないようなので。

def
def foo
  # ...
end

上記スクリプトは SyntaxError にならないdef がふたつあるのに注意)。

しかし、実際にメソッド foo を呼び出そうとすると、

def
def foo
  # ...
end
foo
% ruby test.rb
test.rb:5: undefined local variable or method `foo' for main:Object (NameError)

未定義だと怒られる。

あと、

p [1, 2, 3].map do |v|
  v + 1
end

このコードは意図通りに動作しないどころか、ブロックが実行されない、というのには驚いた。