¿Hay alguna explicación "simple" de qué procs y lambdas hay en Ruby?¿Hay alguna explicación "simple" de qué procs y lambdas hay en Ruby?
5
A
Respuesta
5
Lambdas (que existen en otros idiomas también) son como funciones ad hoc, creadas solo para un uso simple en lugar de realizar algunas acciones complejas.
Cuando utiliza un método como Array#collect
que toma un bloque en {}
, básicamente está creando un lambda/proc/block solo para el uso de ese método.
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
Ver Anonymous functions en Wikipedia, y algunos other SO questions de los matices de lambda
vs Proc
.
Cuestiones relacionadas
- 1. Bloques y Procs en Ruby
- 2. ¿Hay alguna sabiduría detrás de "y", "o" operadores en Ruby?
- 3. ¿Hay alguna prueba para Ruby on Rails?
- 4. ¿Por qué se pueden invocar procs con === en ruby 1.9?
- 5. ¿Hay alguna manera simple de formatear decimales en T-SQL?
- 6. ¿Qué razón hay para que C# o Java tengan lambdas?
- 7. ¿Hay alguna solución simple para distribuir trabajo computacional en .NET?
- 8. ¿Hay alguna biblioteca simple de Servidor FTP que sea incrustable?
- 9. ¿Hay alguna manera de obtener todas las variables en Ruby?
- 10. ¿Hay alguna manera simple de probar dos PNG por igualdad?
- 11. ¿Hay alguna manera simple de concatenar dos BitArray (C# .NET)?
- 12. ¿Hay alguna manera de interceptar setters y getters en C#?
- 13. ¿Hay alguna diferencia entre! == y! = En PHP?
- 14. ¿Hay alguna diferencia entre SSLv3 y TLS1.0?
- 15. ¿Hay alguna diferencia entre System.Windows.Clipboard y System.Windows.Forms.Clipboard?
- 16. ¿Hay alguna diferencia entre MsgBox y MessageBox.Show?
- 17. ¿Hay alguna omniauth para php?
- 18. ¿Hay alguna diferencia entre log4net.Config.BasicConfigurator.Configure() y log4net.Config.XmlConfigurator.Configure()?
- 19. ¿Hay alguna alternativa a C?
- 20. ¿Hay alguna diferencia entre gluLookAt() y glFrustum()?
- 21. ¿Hay alguna manera fácil de alternar "do/end" y "{}" en ruby en Vim?
- 22. ¿Hay add_days en ruby datetime?
- 23. ¿Hay alguna gema Ruby para usar Google Images API?
- 24. ¿Hay alguna diferencia entre DataTable.Clear y DataTable.Rows.Clear?
- 25. ¿Hay alguna diferencia entre CPython y Python
- 26. ¿Hay alguna diferencia entre UITableViewCellAccessoryDetailDisclosureButton y UITableViewCellAccessoryDisclosureIndicator
- 27. ¿Qué hay de malo con esta simple metaclase de python?
- 28. ¿Por qué hay un String # replace en Ruby?
- 29. ¿Hay alguna ScalaConsole?
- 30. ¿Hay una declaración de goto en Ruby?
En el ejemplo anterior, aún podría hacerse sin la lambda. ¿No es el recoger lo mismo que para el siguiente ciclo con el bloque siendo el cuerpo? Solo estoy tratando de ver las ventajas de usar el bloque. – Zubair
Por supuesto que podría hacerlo con un bucle for, pero esta es una manera más elegante y Ruby-ish de hacerlo. Otros métodos pueden ser más difíciles de duplicar con un bucle. – jtbandes
Bien, supongo que sería útil saber qué cosas puedo hacer con Lambdas y Procs que, de lo contrario, serían demasiado detalladas, quizás con un ejemplo. – Zubair