Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lenguaje
- // Object -> clase con métodos estáticos
- // no se puede instanciar
- // en ejecución hay sólo una (Singleton)
- // Son los puntos de entrada en la ejecución
- // - con método main
- // - subtipo de App
- object Referencia {
- def main(args : Array[String]) : Unit = {
- println("Mensaje desde Scala")
- var cadena = "Cadena de texto"
- var otraCadena : String = "Otra cadena de texto"
- cadena = "Nueva cadena"
- val entero = 10
- val otroEntero : Int = 20
- // entero = 20
- printf("Cadena: %s - Entero: %d%n", cadena, entero);
- // Bloque de código
- // son tipos
- // Devuelven la último sentencia
- println("Contador " + {
- var contador = 20
- contador += 1
- contador
- });
- // Funciones
- // son tipos
- // se pueden crear en cualquier ámbito
- val sumar = (a : Double, b : Double) => a + b
- def multiplicar(a : Double, b: Double) : Double = a * b
- // Pueden tener más de una lista de parámetros
- def sumarYMultiplicar(a : Double, b : Double)(k : Double) = {
- (a + b) * k
- }
- println("SumarYMultiplicar: " + sumarYMultiplicar(10, 20)(10));
- // Función parcial
- val multiplicarPorK = sumarYMultiplicar(20, 20) _
- println("MultiplicarPorK: " + multiplicarPorK(100));
- // Pueden tener valores por defecto
- def activarUsuario(
- nombre : String = "testuser",
- clave : String = "testpwd") : Boolean = {
- printf("Activando usuario: %s - %s%n", nombre, clave)
- true
- }
- activarUsuario()
- activarUsuario("Juan")
- activarUsuario(clave = "uno", nombre = "useruno")
- // Funciones high-order
- // -tienen como parámetro o tipo de retorno una o más funciones
- def ejecutarOperacion(
- datos : List[Int],
- operacion : (Int, Int) => Int) : Int = {
- datos.reduce(operacion);
- }
- def sumar2Enteros(a : Int, b : Int) : Int = a + b
- val e1 = ejecutarOperacion(List(10, 20, 30), sumar2Enteros)
- val e2 = ejecutarOperacion(List(10, 20, 30), (a, b) => a + b)
- val e3 = ejecutarOperacion(List(10, 20, 30), _ + _)
- printf("e1: %d, e2: %d, e3: %d%n", e1, e2, e3)
- // Tuplas
- var coordenadas = (1.2, 2.4, 3.6)
- var laRealidad = Tuple3[Double, Double, Double](1.2, 2.4, 3.6)
- // Acceso a los elementos de la tupla
- printf("Lat: %f, Lon: %f, Alt: %f%n",
- coordenadas._1, coordenadas._2, coordenadas._3)
- var (lat, lon, alt) = coordenadas
- printf("Lat: %f, Lon: %f, Alt: %f%n",
- lat, lon, alt)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement