Als ich unten einzelnen Methoden in den Klassen nennen, ich ArgumentError
erwartete, aber ich sehe:Erwartet Argument bekam aber NoMethodError
class A
def with_one_argument(&block)
block.call
end
end
A.new.with_one_argument
# => NoMethodError: undefined method `call' for nil:NilClass
Aber das wirkt wie erwartet:
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)
Kann jemand erklären, Warum wird (&block)
als besonders behandelt? Meiner Meinung nach wird ArgumentError
erwartet, wenn ich einem Argument keinen Standardwert bereitstelle.
danke für die Bearbeitung @sawa, sieht es jetzt sauberer :) – illusionist