を得たが、私は以下を参照してください期待例外ArgumentErrorが、私は以下のクラスの個々のメソッドを呼び出すと、私は<code>ArgumentError</code>を期待していた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