Tracks
/
Crystal
Crystal
/
Temario
/
Fundamentos
Fu

Fundamentos en Crystal

1 ejercicio

Acerca de Fundamentos

Crystal es un lenguaje de programación compilado y orientado a objetos. Estos son algunos de los objetivos del lenguaje:

  • Sintaxis inspirada en Ruby.

  • Con comprobación estática de tipos, pero sin tener que especificar el tipo de las variables ni de los argumentos de los métodos.

  • Poder llamar a código C escribiendo bindings hacia él en Crystal.

  • Tener evaluación y generación de código en tiempo de compilación, para evitar el código repetitivo.

  • Compilar a código nativo eficiente.

El trabajo en Crystal comenzó en 2011 con el objetivo de crear un lenguaje con la elegancia y la productividad de Ruby, pero con el rendimiento y la seguridad de tipos de un lenguaje compilado. El compilador del lenguaje se escribió inicialmente en Ruby, pero se reescribió en Crystal en 2013. Ary Borenszweig, Juan Wajnerman y Brian Cardiff desarrollaron y diseñaron el lenguaje.

Primeros pasos

Variables

Para declarar una variable, usa el operador de asignación =. En Crystal, las variables deben usar el formato snake_case.

number = 1
puts number # => 1

number = 2
puts number # => 2

Constantes

Las constantes se declaran con el mismo operador de asignación =, pero usan todas las letras en mayúscula, lo que se conoce como SCREAMING_SNAKE_CASE.

NUMBER = 1
puts NUMBER # => 1

Asignar un valor a una constante ya definida dará como resultado un error en tiempo de compilación.

NUMBER = 1

NUMBER = 2
# Error: already initialized constant NUMBER

Tipos

Crystal es un lenguaje compilado, lo que significa que a cada variable o argumento de método se le asigna un tipo en tiempo de compilación. El compilador es capaz de inferir el tipo de una variable o de un argumento de método. Sin embargo, en algunos casos es necesario especificar el tipo. Los casos que requieren que se establezca un tipo se explicarán en conceptos posteriores.

Métodos

Los métodos son una forma de agrupar un conjunto de instrucciones que se pueden reutilizar. En Crystal, los métodos suelen definirse dentro de una clase, un módulo o un struct. Sin embargo, los métodos también se pueden definir fuera de una clase, un módulo o un struct. Los métodos se declaran con la palabra clave def, seguida del nombre del método. En Crystal, los métodos deben escribirse en snake_case. Puedes omitir los paréntesis cuando un método no tiene argumentos. Para declarar el final de un método, debes usar la palabra clave end.

def hello
  puts "Hello World!"
end

Usar un método que no existe para el tipo de una variable o de un argumento de método dará como resultado un error en tiempo de compilación.

number = 1
number + "1"
# Error: no overload matches 'Int32#+' with type String

Argumentos

Los métodos pueden tener argumentos. Los argumentos son datos que se pasan a un método. Para poder dar argumentos a un método, debes especificar el nombre del argumento. En Crystal, los argumentos deben escribirse en snake_case. Un método puede tener varios argumentos, pero una coma debe separarlos.

def hello(name)
  puts "Hello #{name}!"
end

Los métodos también pueden tener varios argumentos. En este caso, los argumentos deben separarse con una coma.

def hello(name, language)
  puts "Hello #{name}! You are learning #{language}."
end

Llamar a métodos

Cuando llamas a un método que pertenece a una clase, un módulo o un struct, debes usar el operador punto (.). El formato debe ser: <ClassName>.<method_name>. Cuando un método no pertenece a una clase, un módulo o un struct, puedes simplemente llamarlo escribiendo su nombre. Los métodos siempre devuelven implícitamente el valor de la última expresión.

Cuando un método tiene argumentos, puedes usar paréntesis al especificar los argumentos en la llamada y en la definición del método, así: <method_name>(<argument_1>, <argument_2>, ...). Cuando un método no tiene argumentos, deben omitirse los paréntesis.

def hello(name)
  "Hello #{name}!"
end

hello("Crystal")
# => Hello Crystal!

Cuando llamas a un método con varios argumentos, una coma debe separar los argumentos. Los argumentos deben darse en el mismo orden que los argumentos del método.

def hello_language(name, language)
  "Hello #{name}! You are learning #{language}."
end

hello_language("World", "Crystal")
# => Hello World! You are learning Crystal.

Llamar a un método con un número incorrecto de argumentos dará como resultado un error en tiempo de compilación.

hello_language("Crystal")
# wrong number of arguments for 'hello_language' (given 1, expected 2)

Suma, resta y multiplicación

En Crystal, puedes usar el operador + para sumar dos números. También puedes usar el operador - para restar dos números. Y puedes usar el operador * para multiplicar dos números.

1 + 1
# => 2

2 - 1
# => 1

2 * 2
# => 4

Comentarios

En Crystal, los comentarios se escriben con el carácter #, seguido de un espacio y luego el comentario. Los comentarios se usan para documentar el código. El compilador no ejecuta los comentarios.

# This is a comment
Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Fundamentos