Quand un lambda ou proc être utilisé? Je les ai vus décrit comme des fonctions anonymes, mais j'ai du mal à comprendre ce concept. Je vous serais reconnaissant de tous les liens vers des exemples de quand vous pouvez utiliser l'un en Ruby, mais surtout en Ruby on Rails.
Réponses
Trop de publicités?http://augustl.com/blog/2008/procs_blocks_and_anonymous_functions/ a une de ce que les blocs de/proc/lambdas sont, comment vous pouvez les utiliser, et comment ils se comparent à des fonctions dans d'autres langues. Il a certainement des réponses à votre question.
Soyez conscient que la dernière section, "note sur les lambdas' mentionne un point qui n'est vrai que dans Ruby 1.8 et a changé de 1,9 - Ruby: Proc.nouveau { 'gaufres' } vs proc { 'gaufres' }
Je ne vois pas où vous faites la distinction entre Ruby on Rails et Ruby. Si vous êtes à la rédaction d'un Ruby on Rails application, vous écrivez du code Ruby, donc si c'est utile en Ruby, il devrait être utile dans Ruby on Rails.
De toute façon, cet article, Quelques Fermetures en Ruby, doit être utile, ainsi qu'à ceci: http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/
C'est un morceau de code qui permet de passer partout.
Il est particulièrement utile dans named_scope, il permet de vous faire quelque chose comme ceci:
named_scope :scoped_by_user, lambda {|user| {:conditions=>{:user_id=>user.id}}}
Disons que vous avez un modèle de Projet et vous souhaitez obtenir tous les projets pour un utilisateur particulier, vous pouvez faire quelque chose comme ceci:
Project.scoped_by_user(123)