[Ruby] Es gibt Ausbeute, aber kein Blockargument

Eine solche Funktion

enumerable.rb


module Enumerable
  #Kürzung
  def all?(*several_variants)
    yield to_enum.next; __unknown
  end
end

benutze alles? so

sample.rb


%w[ant bear cat].all? { |word| word.length >= 3 } #=> true

Warum kann ich es weitergeben, obwohl das Argument kein "& block" enthält? Dies liegt daran, dass das Blockargument weggelassen werden kann, wenn die ** -Methode ** eine Ausbeute enthält.

Wenn Sie jedoch nicht in die Methode schauen, wissen Sie nicht, ob Sie den Block übergeben können. Daher scheint es notwendig zu sein, zu prüfen, ob Sie ihn weglassen sollen.

Recommended Posts

[Ruby] Es gibt Ausbeute, aber kein Blockargument
[ruby] Eine Methode mit einem Argument aufrufen