Aprendiendo Ceylon

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Tutorial sobre Ceylon

Imagen de santos.r09

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.

shared void run() {
        //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");
                }
        }
       
}