Scala
Instalación
sdk install scala
Verificar instalación
scala --version
scalac --version
Compilar y ejecutar
scalac Holamundo.scala
scala Holamundo
Solo ejecutar
scala Holamundo.scala
object Holamundo{ | |
def main(args: Array[String]): Unit = { | |
println("Hola mundo!!") | |
} | |
} |
object TestScala{ | |
def main(args:Array[String]):Unit={ | |
println("\t [ Programando en Scala ]") | |
testA() | |
testB() | |
} | |
/** | |
* Variables. | |
*/ | |
def testA():Unit={ | |
var naranja:CharSequence = "Naranja"; | |
var car:Char = '\u0121'; | |
var obj:Object = Object(); | |
val verdadero:Boolean = false; | |
println("Color: "+naranja); | |
println("Caracter: "+car); | |
println("Object: "+obj); | |
println("Booleano: "+(!verdadero)) | |
try { | |
val objMyClass = MyClass(naranja); | |
objMyClass.imprimir() | |
}catch { | |
case e: Exception => println("Ha ocurrido una excepcion: "+e.getMessage()) | |
} | |
} | |
/** | |
* Excepciones. | |
*/ | |
def testB():Unit={ | |
try{ | |
val errorDivide = 1/0; | |
}catch{ | |
case e: ArithmeticException=>println("Ha ocurrido una ArithmeticException: "+e.getMessage()) | |
case e: Exception => println("Ha ocurrido una excepcion: "+e.getMessage()) | |
} | |
var miLista = Array(1.1,2.2,3.3) | |
try{ | |
println(miLista(3)) | |
}catch{ | |
case e: ArrayIndexOutOfBoundsException =>println("Ha ocurrido una ArrayIndexOutOfBoundsException: "+e.getMessage()) | |
case e: Exception => println("Ha ocurrido una excepcion: "+e.getMessage()) | |
} | |
val myObjNulo:String = null; | |
try{ | |
println(myObjNulo.length()) | |
}catch{ | |
case e: NullPointerException =>println("Ha ocurrido una NullPointerException: "+e.getMessage()) | |
case e: Exception => println("Ha ocurrido una excepcion: "+e.getMessage()) | |
} | |
} | |
} | |
class MyClass(etiqueta:CharSequence): | |
def imprimir():Unit= println(etiqueta) |
import scala.io.StdIn._ | |
object Variables{ | |
def main(args: Array[String]): Unit = { | |
bienvenida(); | |
variables(); | |
selectivas(); | |
repetitivas(); | |
clases(); | |
entrada() | |
} | |
def entrada():Unit={ | |
val nombre = readLine("Introduce tu nombre:") | |
println("Introduce tu edad: ") | |
val edad = readInt() | |
printf("Tu nombre es: %s, Tienes: %d años\n", nombre, edad) | |
} | |
def clases():Unit={ | |
val x:X = X() | |
val y: Y = Y() | |
val simple = Simple() | |
simple.nombre = "Eusebio" | |
val simpleTwo: SimpleTwo = SimpleTwo("Nadia") | |
val micompu: InfoCompu = InfoCompu() | |
println("\t [ Clases en Scala ]") | |
if(x.isInstanceOf[X]){ | |
println("Es una instancia de X") | |
} | |
if(y.isInstanceOf[X]){ | |
println("Es una instancia de X") | |
} | |
printf("%s\n",simple.nombre) | |
printf("%s\n",simpleTwo.nombre) | |
printf("Nombre del PC: %s\n" , micompu.nombrePC()); | |
printf("Nombre usuario: %s\n" ,micompu.usuario()); | |
printf("Procesador: %s\n",micompu.procesador()); | |
printf("Sistema operativo: %s\n", micompu.SO()); | |
printf("Version JDK: %s\n",micompu.JDK()); | |
printf("Directorio actual: %s\n",micompu.dir()); | |
} | |
def repetitivas(): Unit={ | |
val librosPrecio = Map( | |
"El ser y la nada" -> 300.0, | |
"La cuarta dama" -> 245.0, | |
"Unicornios y dragones" -> 350.0) | |
val numeros = Seq(1,2,3,4,5) | |
val nombres = List("Bill", "Candy", "Karen", "Leo", "Regina") | |
println("\t [ Sentencias repetitivas ]") | |
for (n <- numeros) println(n) | |
println() | |
for(n <- nombres) println(n) | |
println() | |
nombres.foreach(println) | |
// Usando el for | |
for ((titulo,precio) <- librosPrecio) println(s"Libro: $titulo, Precio: $precio") | |
println() | |
// Usando for each | |
librosPrecio.foreach { | |
case(titulo,precio) => println(s"Libro: $titulo, Precio: $precio") | |
} | |
} | |
def selectivas():Unit ={ | |
var cierto:Boolean = false | |
val opcion = 1 | |
println("\t [ Sentencias selectivas ]") | |
if (!cierto){ | |
println("A"); | |
} | |
if (cierto){ | |
println("B") | |
}else if( 32 > 43 && 90 == 32){ | |
println("C") | |
}else{ | |
println("AA") | |
} | |
printf("Resultado: %s\n",matchOpcion(opcion)) | |
"Alef"match { | |
case "Alef" => println("El inicio") | |
case "Bet" => println("La sabiduría") | |
case _ => println("undefined") | |
} | |
} | |
def matchOpcion(x:Int): String = x match{ | |
case 0 => "Opcion 0" | |
case 1 => "Opcion 1" | |
case 2 => "Opcion 2" | |
case _ => "Otra opcion" | |
} | |
def bienvenida():Unit= println("\t [ Programando en Scala ]") | |
def variables():Unit = { | |
val nombre:String = "Fernando" | |
var cierto:Boolean = 34 > 88 | |
val car: Char = '\u0021' | |
val flotante: Float = 32.1f | |
val numero: Short = 2 | |
val entero: Int = 321 | |
val largo: Long = 1202020L | |
val real: Double = 30303.88 | |
val bigDecimal = BigDecimal("2") | |
println("\t [Variables en Scala]") | |
printf("Hola, %s\n",nombre) | |
printf("Es cierto?: %b\n",cierto) | |
printf("Caracter: %c\n",car) | |
printf("Numero: %d\n",numero) | |
printf("Entero: %d\n",entero) | |
printf("Largo: %1d\n",largo) | |
printf("Flotante: %.2f\n",flotante) | |
printf("Real: %.2f\n",real) | |
printf("BigDecimal: %.2f\n",bigDecimal) | |
} | |
} | |
class X{} | |
class Y extends X{} | |
class Simple(){ | |
var nombre:String="" | |
} | |
class SimpleTwo(var nombre:String) | |
class InfoCompu{ | |
def nombrePC():String={ | |
System.getenv("COMPUTERNAME"); | |
} | |
def usuario():String={ | |
System.getProperty("user.name"); | |
} | |
def procesador():String={ | |
System.getenv("PROCESSOR_IDENTIFIER"); | |
} | |
def SO():String={ | |
System.getProperty("os.name"); | |
} | |
def JDK():String={ | |
System.getProperty("java.version"); | |
} | |
def dir():String={ | |
System.getProperty("user.dir"); | |
} | |
} |