Quando deve essere utilizzato un lambda o un proc. Li ho visti descritti come funzioni anonime, ma sto lottando per capire questo concetto. Gradirei qualsiasi link o esempio su quando potresti usarne uno in Ruby, ma specialmente in Ruby on Rails.Quando usare un lambda in Ruby on Rails?
risposta
http://augustl.com/blog/2008/procs_blocks_and_anonymous_functions/ ha un run-down di ciò che i blocchi/procs/lambda sono, come è possibile utilizzarli e il loro confronto con le funzioni in altre lingue. Sicuramente risponde alla tua domanda.
fare essere consapevoli del fatto che l'ultima sezione 'Una nota sul lambda' parla di un punto che è vero solo in Ruby 1.8 e ha cambiato in 1,9 - Ruby: Proc.new { 'waffles' } vs. proc { 'waffles' }
lambda è eccezionalmente utile in named_scope
, in modo che sia possibile passare i parametri a named_scopes
.
Non vedo dove si effettua la distinzione tra Ruby on Rotaie e Rubino. Se stai scrivendo un'applicazione Ruby on Rails, stai scrivendo il codice Ruby, quindi se è utile in Ruby, dovrebbe essere utile in Ruby on Rails.
In ogni caso, questo articolo, Some Useful Closures in Ruby, dovrebbe essere utile, così come questo: http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/
Buon punto. Una sorta di foglio di trucchi che elencava tutti i metodi incorporati che prendevano lambda poteva avere un senso, ma se capisci cos'è un lambda, non hai bisogno di un foglio di questo tipo. –
Si tratta di un pezzo di codice che permette di passare intorno.
E 'particolarmente utile in named_scope, permette di fare qualcosa di simile:
named_scope :scoped_by_user, lambda {|user| {:conditions=>{:user_id=>user.id}}}
Diciamo che avete un modello di progetto e si desidera ottenere tutti i progetti per un particolare utente, si può fare qualcosa in questo modo:
Project.scoped_by_user(123)
Dove ho visto Lambda utilizzata è in fase di test ...
lambda do
post :create, :user => @attr
end.should_not change(User, :count)
Lambda ti permette di avere quel test alla fine per assicurarti che il codice eseguito nel blocco lambda non cambi il conto dell'utente.
Che cos'è lambda?
Prova questo con il vostro irb.
lam = lambda { puts "Hello world"}
lam.class
#output is
=> Proc
lambda in ruby è anche un esempio di classe Proc. lambda sono un diverso sapore di procs.
Che cos'è Proc?
Gli oggetti proc sono blocchi di codice che sono stati associati a un insieme di variabili locali.
proc = Proc.new { puts "Hello World" }
proc.call
#output is
=> Hello World
Qual è la differenza tra un proc e lambda?Il confronto spiegherà gli impieghi
Lambdas controlla il numero di argomenti, mentre i proc non lo fanno.
multiply = lambda { |x,y| x*y }
multiply.call(2,3) #=>6
multiply.call(2) #ArgumentError: wrong number of arguments (1 for 2)
multiply = Proc.new {|x| x*x}
multiply.call(2) # =>4
multiply.call(2,3) # =>4 (It ignore the second argument)
lambda e delle PROC trattare il ‘ritorno’ parola chiave in modo diverso (Leggi l'articolo qui sotto per esempio)
Leggi questo grande articolo per ulteriori dettagli http://awaxman11.github.io/blog/2013/08/05/what-is-the-difference-between-a-block/
- 1. Perché dovrei usare Ruby on Rails?
- 2. Curl on Ruby on Rails
- 3. Docsplit Ruby on Rails
- 4. Devo usare has_one o belongs_to in ruby on rails?
- 5. Come posso usare jTable in Ruby on Rails?
- 6. Ruby on Rails colonna decimale
- 7. Ruby on rails tasks scheduling
- 8. Associazione polimorfica Ruby on Rails
- 9. Problemi compresi httparty in Ruby on Rails
- 10. Ruby on rails problems on heroku
- 11. Busting Ruby on Rails Myths
- 12. Formati personalizzati in Ruby on Rails
- 13. Quando utilizzare la memoizzazione in Ruby on Rails
- 14. Ruby on Rails versus Python
- 15. Ruby on Rails redirect_to arguments
- 16. Ruby on Rails - Global Variable?
- 17. SSL con Ruby on Rails
- 18. downgrade di Ruby on Rails
- 19. Monit Ruby on Rails Sidekiq
- 20. Ruby on Rails. Percorsi Unicode
- 21. Ruby on Rails: visualizza condizionatamente un parziale
- 22. Campo Ruby on Rails medio?
- 23. Ridenominazione dell'applicazione Ruby on Rails
- 24. Ruby on Rails javascript_include_tag: default
- 25. sottraendo due date in Ruby on Rails
- 26. Minitest Issues Ruby on Rails
- 27. Ruby on Rails Rake Error
- 28. Ruby on rails e Node.js
- 29. Ruby on Rails, rilevamento Javascript
- 30. Ruby on Rails Passing Parameter In URL
fissi di nuovo. Grazie;) –
Link è morto di nuovo – JeffC
Bleh, scusa ancora, ancora. Risolverà. –