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:51]
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. \\  
-Para indicar en Scala que un parámetro (en este caso el segundo) se evaluará ​por nombre, haremos:+Cuando definimos usando ''​val''​ lo hacemos haciéndolo por valor. Cuando lo hacemos usando ''​def''​ lo hacemos ​por nombre:
 <​code>​ <​code>​
-def first (xDouble, y => Double) ​= x+def loop (Boolean ​loop 
 +def x loop  
 +val = loop  // bucle infinito
 </​code>​ </​code>​
 +
 +==== Notas ====
 +  * Cuando tenemos una función recursiva necesitamos indicar su valor devuelto.
 +
functional/scala.1365184271.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)