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:29]
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 147: Línea 148:
   * {{:​functional:​scala:​test_jars.tar.gz|Jars para tests}}   * {{:​functional:​scala:​test_jars.tar.gz|Jars para tests}}
 ==== Funciones y evaluación ==== ==== Funciones y evaluación ====
 +Sintaxis de definición:​
 +<​code>​
 +def nombre (par_name : tipo) : tipo_return = { ... }
 +</​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 176: Línea 186:
 25 25
 </​code>​ </​code>​
 +
 +Si tuviesemos la siguientes expresiones
 +<​code>​
 +def loop () = loop
 +def first (x: Double, y: Double) = x
 +first(x, loop)
 +</​code>​
 +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.1365182959.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)