Struct y Data en Ruby
Clases de valor en una línea, mutables o congeladas.
Point = Struct.new(:x, :y) do
def distance_to(other)
Math.sqrt((x - other.x)**2 + (y - other.y)**2)
end
end
a = Point.new(0, 0)
b = Point.new(3, 4)
puts b.x
puts a.distance_to(b)
# Data.define construye una clase de valor inmutable
Size = Data.define(:width, :height)
s = Size.new(width: 80, height: 24)
puts s.width * s.height
Cómo funciona
Struct.newconstruye una clase a partir de nombres de campos; el bloque es opcional.- El bloque agrega métodos de verdad como
distance_to. Data.definecrea una versión inmutable que se construye con palabras clave.
Palabras clave y builtins usados aquí
defdoendputs
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 329
- Tokens
- 106
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 80 segundos.
Paso 3 de 3 en Nil y modismos; paso 24 de 29 en Fundamentos del lenguaje.