3 votes

que signifie cette syntaxe en Ruby ? tâches.toutes ?(&:complete ?)

Je me promène dans le projet d'exemple du livre Rails 5 Test Prescriptions - Build a Healthy Codebase (date de publication : 2018) et je rencontre cette méthode :

#pages 29-30 of the book
class Project
  .
  .
  def done?
    tasks.all?(&:complete?) #only this line confused me, especially the `&` part
  end
end

la syntaxe me semble vraiment étrange car je viens d'apprendre Ruby & Rails depuis plus d'un mois tout conseil, ne serait-ce que pour m'indiquer où je dois lire, serait vraiment apprécié.

1voto

Vasfed Points 166

& sert à transmettre un bloc à une méthode en tant que bloc (également utilisé dans l'autre sens dans la liste des paramètres pour faire d'un bloc implicite un paramètre), il appelle implicitement to_proc sur l'objet passé.

Symbol#to_proc para :symbol fait un proc{|param| param.symbol }

Votre code est donc équivalent à tasks.all?{|task| task.complete? }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X