當我把下面的類單獨的方法,我期待ArgumentError
,但我看到:預計ArgumentError,但是得到了NoMethodError
class A
def with_one_argument(&block)
block.call
end
end
A.new.with_one_argument
# => NoMethodError: undefined method `call' for nil:NilClass
但這充當預期:
class B
def with_one_argument(some_value)
puts some_value
end
end
B.new.with_one_argument
# => ArgumentError: wrong number of arguments (0 for 1)
任何人可以解釋爲什麼(&block)
被視爲特殊?根據我的理解,如果我沒有爲參數提供默認值,那麼預計爲ArgumentError
。
感謝編輯@sawa,它現在看起來更清潔:) – illusionist