Wollok
Vas a tener que instalarte Wollok. En la sección Videos encontrarás las instrucciones tanto para Windows como Linux. También recomendamos leer detalladamente las instrucciones de instalación publicadas en la página de Wollok donde se incluyen otras alternativas de instalación.
En principio recomendamos los apuntes publicados en el sitio de Wollok. Además, tenemos estos recursos:
Sintaxis basica
Objeto con un atributo y dos métodos
object pepita { var energia = 0 method volar(kilometros) { energia += kilometros } method puedeVolar() { return energia > 0 } }
Comentario
// un comentario /* un comentario multilínea */
Strings
"una Cadena" 'una Cadena'
Booleanos
true false
Conjunto
#{} #{1, 2}
Lista
[] [1, 1, 2]
Bloques sin parámetros
{algo}
Bloques / Exp. lambda (De un parámetro)
{x => algo con x}
Bloques / Exp. lambda (Más de un parámetro)
{x, y => algo con x e y}
Operadores lógicos y matemáticos
Equivalencia
==
Identidad
===
Equivalencia
!=
Comparación de orden
> >= < <=
Disyunción, 'O' lógico
|| or
Conjunción, 'Y' lógico
&& and
Negación
!unBool unBool.negate() not unBool
Operadores aritméticos
+ - * /
División entera
dividendo.div(divisor)
Resto
dividendo % divisor
Valor absoluto
unNro.abs()
Exponenciación
base ** exponente
Raíz cuadrada
unNro.squareRoot()
Máximo entre dos números
unNro.max(otroNro)
Mínimo entre dos números
unNro.min(otroNro)
Verificar si un número está entre otros dos
unNro.between(uno, otro)
Par
unNro.even()
Impar
unNro.odd()
Operaciones simples sin efecto sobre colecciones/listas
Longitud
coleccion.size()
Si está vacía
coleccion.isEmpty()
Concatenación
coleccion + otraColeccion
Unión
set.union(coleccion)
Intersección
set.intersection( coleccion)
Acceso por índice
lista.get(indice)
Pertenencia
coleccion.contains(elem)
Máximo
coleccionOrdenable.max()
Minimo
coleccionOrdenable.min()
Aplanar
coleccionDeColecciones.flatten()
Primeros n elementos
lista.take(n)
Primer elemento
lista.head() lista.first()
Último elemento
lista.last()
Sin repetidos
coleccion.asSet()
Operaciones avanzadas (de orden superior) sin efecto sobre colecciones/listas
Sumatoria según transformación
coleccion.sum(bloqueNumericoDe1)
Filtrar
coleccion.filter(bloqueBoolDe1)
Transformar
coleccion.map(bloqueDe1)
Todos cumplen
coleccion.all(bloqueBoolDe1)
Alguno cumple
coleccion.any(bloqueBoolDe1)
Transformar y aplanar
coleccion.flatMap(bloqueDe1)
Reducir/plegar a izquierda
coleccion.fold(valInicial, blqDe2)
Primer elemento que cumple condición
coleccion.find(bloqueBoolDe1) coleccion.findOrElse({bool}, {})
Cantidad de elementos que cumplen condición
coleccion.count(bloqueBoolDe1)
Obtener colección ordenada
coleccion.sortedBy(bloqueBoolDe2)
Máximo según criterio
coleccion.max(bloqueOrdenableDe1)
Mínimo según criterio
coleccion.min(bloqueOrdenableDe1)
Mensajes de colecciones con efecto
Agregar un elemento.
coleccion.add(objeto)
Agregar todos los elementos de la otra colección.
coleccion.addAll(otraColeccion)
Evaluar el bloque para cada elemento.
coleccion.forEach({})
Eliminar un objeto.
coleccion.remove(objeto)
Eliminar todos los elementos.
coleccion.clear()
Deja ordenada la lista según un criterio.
lista.sortBy(bloqueBoolDe2)
Tambien podes descargar este mismo resumen de la sintaxis de Wollok para tenerlo a mano.
Ver recursoAcá hay recurso para tener a mano cuando empecemos a trabajar con colecciones (Sobre todo las últimas páginas que sirven de machete para recordar qué operaciones existen).
Ver recurso