Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. package lenguaje
  2.  
  3. // Object -> clase con métodos estáticos
  4. // no se puede instanciar
  5. // en ejecución hay sólo una (Singleton)
  6.  
  7. // Son los puntos de entrada en la ejecución
  8. // - con método main
  9. // - subtipo de App
  10.  
  11. object Referencia {
  12.  
  13. def main(args : Array[String]) : Unit = {
  14.  
  15. println("Mensaje desde Scala")
  16.  
  17. var cadena = "Cadena de texto"
  18. var otraCadena : String = "Otra cadena de texto"
  19.  
  20. cadena = "Nueva cadena"
  21.  
  22. val entero = 10
  23. val otroEntero : Int = 20
  24.  
  25. // entero = 20
  26. printf("Cadena: %s - Entero: %d%n", cadena, entero);
  27.  
  28. // Bloque de código
  29. // son tipos
  30. // Devuelven la último sentencia
  31.  
  32. println("Contador " + {
  33. var contador = 20
  34. contador += 1
  35. contador
  36. });
  37.  
  38. // Funciones
  39. // son tipos
  40. // se pueden crear en cualquier ámbito
  41.  
  42. val sumar = (a : Double, b : Double) => a + b
  43.  
  44. def multiplicar(a : Double, b: Double) : Double = a * b
  45.  
  46. // Pueden tener más de una lista de parámetros
  47. def sumarYMultiplicar(a : Double, b : Double)(k : Double) = {
  48. (a + b) * k
  49. }
  50.  
  51. println("SumarYMultiplicar: " + sumarYMultiplicar(10, 20)(10));
  52.  
  53. // Función parcial
  54.  
  55. val multiplicarPorK = sumarYMultiplicar(20, 20) _
  56.  
  57. println("MultiplicarPorK: " + multiplicarPorK(100));
  58.  
  59. // Pueden tener valores por defecto
  60. def activarUsuario(
  61. nombre : String = "testuser",
  62. clave : String = "testpwd") : Boolean = {
  63.  
  64. printf("Activando usuario: %s - %s%n", nombre, clave)
  65. true
  66. }
  67.  
  68. activarUsuario()
  69.  
  70. activarUsuario("Juan")
  71.  
  72. activarUsuario(clave = "uno", nombre = "useruno")
  73.  
  74. // Funciones high-order
  75. // -tienen como parámetro o tipo de retorno una o más funciones
  76.  
  77. def ejecutarOperacion(
  78. datos : List[Int],
  79. operacion : (Int, Int) => Int) : Int = {
  80.  
  81. datos.reduce(operacion);
  82. }
  83.  
  84. def sumar2Enteros(a : Int, b : Int) : Int = a + b
  85.  
  86. val e1 = ejecutarOperacion(List(10, 20, 30), sumar2Enteros)
  87.  
  88. val e2 = ejecutarOperacion(List(10, 20, 30), (a, b) => a + b)
  89.  
  90. val e3 = ejecutarOperacion(List(10, 20, 30), _ + _)
  91.  
  92. printf("e1: %d, e2: %d, e3: %d%n", e1, e2, e3)
  93.  
  94. // Tuplas
  95.  
  96. var coordenadas = (1.2, 2.4, 3.6)
  97. var laRealidad = Tuple3[Double, Double, Double](1.2, 2.4, 3.6)
  98.  
  99. // Acceso a los elementos de la tupla
  100. printf("Lat: %f, Lon: %f, Alt: %f%n",
  101. coordenadas._1, coordenadas._2, coordenadas._3)
  102.  
  103. var (lat, lon, alt) = coordenadas
  104.  
  105. printf("Lat: %f, Lon: %f, Alt: %f%n",
  106. lat, lon, alt)
  107.  
  108. }
  109.  
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement