Esistono spiegazioni "semplici" di cosa procs e lambda sono in Ruby?Esistono spiegazioni "semplici" di cosa procs e lambda sono in Ruby?
5
A
risposta
5
Lambdas (che esistono anche in altre lingue) sono come funzioni ad hoc, create solo per un uso semplice piuttosto che per eseguire alcune azioni complesse.
Quando si utilizza un metodo come Array#collect
che prende un blocco nel {}
, si sta essenzialmente creando un lambda/proc/blocco solo per l'utilizzo di tale metodo.
a = [1, 2, 3, 4]
# Using a proc that returns its argument squared
# Array#collect runs the block for each item in the array.
a.collect {|n| n**2 } # => [1, 4, 9, 16]
sq = lambda {|n| n**2 } # Storing the lambda to use it later...
sq.call 4 # => 16
Vedi Anonymous functions su Wikipedia, e alcuni other SO questions per le sfumature della lambda
vs. Proc
.
Problemi correlati
- 1. Blocks & Procs in Ruby
- 2. Restituire le istruzioni all'interno di procs, lambda e blocchi
- 3. Cosa sono i servizi Web in termini semplici
- 4. Cosa sono $ _ [0], $ _ [1] in Ruby?
- 5. Sono necessarie alcune spiegazioni su Distribution.TestSuite
- 6. foldr e foldl ulteriori spiegazioni ed esempi
- 7. Alcune semplici domande su Ruby: iteratori, blocchi e simboli
- 8. Cosa sono i tipi lambda in Scala e quali sono i loro benefici?
- 9. Binding of Procs
- 10. Le comprensioni in Python e Javascript sono molto semplici?
- 11. Cosa sono [e] in C#?
- 12. Cosa sono `+:` e `-:`?
- 13. Esistono spiegazioni di alto livello su come Zend Framework 2 si integri tutti?
- 14. Esistono soluzioni di pagamento Bitcoin per Ruby?
- 15. Per cosa sono utili le globali di Ruby?
- 16. Categoria Sonar Spiegazioni
- 17. Cosa significa $/in Ruby?
- 18. Esistono equivalenti a method_missing di Ruby in altre lingue?
- 19. Differenza tra lambda e -> operatore in Ruby
- 20. Cosa fa == in Ruby?
- 21. In termini semplici, cosa significa "statico" in Java?
- 22. Cosa sono TestExecutionListeners e cosa fanno?
- 23. Cosa significa @@ in Ruby?
- 24. Ci sono descrizioni semplici sul port forwarding usando python?
- 25. Che cosa significa "da ... import ..." in termini di bonehead semplici?
- 26. Cosa sono Groovy/Grails/Hibernate/JBoss/Jade in termini molto semplici?
- 27. Ulteriori spiegazioni su IntentService
- 28. Cosa sono M e L in GeometryDrawing?
- 29. Esempi semplici di co e controvarianza
- 30. Cosa sono ReservedCodeCacheSize e InitialCodeCacheSize?
Nell'esempio precedente potrebbe ancora essere eseguito senza lambda. La raccolta non è la stessa di un ciclo successivo con il blocco che rappresenta il corpo? Sto solo cercando di vedere i vantaggi dell'utilizzo del blocco. – Zubair
Ovviamente si può fare con un ciclo for, ma questo è un modo più elegante e ruby per farlo. Altri metodi potrebbero essere più difficili da duplicare con un ciclo. – jtbandes
Ok, immagino sarebbe utile sapere quali cose posso fare con Lambdas e Procs altrimenti sarebbe troppo prolisso, magari con un esempio. – Zubair