Когда я называю отдельные методы ниже классов, я ожидал 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