[Ruby] Il y a yield mais pas d'argument de bloc

Une telle fonction

enumerable.rb


module Enumerable
  #réduction
  def all?(*several_variants)
    yield to_enum.next; __unknown
  end
end

utiliser tout? comme ça

sample.rb


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

Pourquoi puis-je le transmettre même s'il n'y a pas de & block dans l'argument? C'est parce que l'argument de bloc peut être omis s'il y a un rendement dans la ** méthode **.

Cependant, si vous ne regardez pas à l'intérieur de la méthode, vous ne saurez pas si vous pouvez passer le bloc, il semble donc nécessaire de considérer s'il faut l'omettre.

Recommended Posts

[Ruby] Il y a yield mais pas d'argument de bloc
[ruby] Appel d'une méthode avec un argument