Aprendiendo Ceylon
Aqui hay un buen material para aprender Ceylon
- http://renatoathaydes.github.io/Learn-Programming-In-Ceylon-Part-1/
- http://renatoathaydes.github.io/Learn-Programming-In-Ceylon-Part-2/
Autor:
Renato Athaydes
- Sr. Negativo's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
Tutorial sobre Ceylon
Tutorial sobre Ceylon
http://lmauzaize.developpez.com/tutoriels/ceylon/typage/
Sobre los ejemplos de renatoathaydes
Si alguien quiere empezar a hacer los primeros ejercicios que aparecen en la página de renatoathaydes van a toparse con algunos errores de compilación, el primero que yo tuve fue: Interpolated expression must not be an optional type: String? is not assignable to Object , que tienen que ver con algo fabuloso: La manera en que Ceylon evita que tengamos un NullPointerException, aquí hay una explicación hecha por ezamudio; y esta de la página oficial de Ceylon.
//value name = process.readLine();
//print("Hola ``name`` "); //Interpolated expression must not be an optional type: String? is not assignable to Object
String? name = "Juan"; //Aquí 'name' puede ser null.
if(exists name){ //Ceylon nos obliga a evaluar cuando puede haber un Null
print("Hola ``name`` ");
}
/*"Lo siguiente genera un error de compilación, ya que el compilador se queja porque
no puede asignar un posible valor null donde se espera recibir algo.
En este caso la cadena a imprimir no puede Interpolar un String con un posible null"*/
//value name = process.readLine(); //readLine()
//print("Hola ``name``");
value x = 23 + 47;
Integer y; // 'y' no tiene un valor por default
//value z = x + y; // esta operación no se puede realizar porque 'y' aún no tiene un valor especifico 'Not definitely specified'
y = 78;
print("El valor de 'x' es: ``x`` y el de 'y': ``y``");
//readLine() devuelve un String?(un 'T?', optional Type, No un String), osea que puede haber un Null, por eso antes de usar ese valor debemos evaluarlo con if(exists)
process.write("Introduce un número(x): ");
value userX = process.readLine();
process.write("Introduce otro número(y):");
value userY = process.readLine();
if(exists userX, exists userY){
value numX = parseFloat(userX);
value numY = parseFloat(userY);
if(exists numX, exists numY){
print("Suma de los números: ``numX + numY``");
}else{
print("No hubó números o faltó uno");
}
}
}