Herramientas de usuario

Herramientas del sitio


functional:scala

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
functional:scala [2013/04/05 17:49]
alfred [Funciones y evaluación]
functional:scala [2020/05/09 09:25] (actual)
Línea 28: Línea 28:
 } }
 </​code>​ </​code>​
 +  * ''​ctrl+shift+f''​ formatea el código.
 ===== Conceptos ===== ===== Conceptos =====
 ==== Conceptos básicos ==== ==== Conceptos básicos ====
Línea 151: Línea 152:
 def nombre (par_name : tipo) : tipo_return = { ... } def nombre (par_name : tipo) : tipo_return = { ... }
 </​code>​ </​code>​
 +Para indicar en Scala que un parámetro (en este caso el segundo) se evaluará por nombre, haremos:
 +<​code>​
 +def first (x: Double, y: => Double) = x
 +</​code>​
 +
 === Diferencia entre evaluación por nombre y por valor === === Diferencia entre evaluación por nombre y por valor ===
 Teniendo... Teniendo...
Línea 185: Línea 191:
 def loop () = loop def loop () = loop
 def first (x: Double, y: Double) = x def first (x: Double, y: Double) = x
 +first(x, loop)
 </​code>​ </​code>​
-Si la evaluamos por nombre ​termina ​pero si la evaluamos por valor cae en bucle infinito.+Si evaluamos ​la tercera ​por nombre ​terminaría ​pero si la evaluamos por valor cae en bucle infinito. ​\\  
 +Cuando definimos usando ''​val''​ lo hacemos haciéndolo por valor. Cuando lo hacemos usando ''​def''​ lo hacemos por nombre: 
 +<​code>​ 
 +def loop () : Boolean = loop 
 +def x = loop  
 +val x = loop  // bucle infinito 
 +</​code>​ 
 + 
 +==== Notas ==== 
 +  * Cuando tenemos una función recursiva necesitamos indicar su valor devuelto. 
functional/scala.1365184151.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)