typestar

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

  1. Struct.new construye una clase a partir de nombres de campos; el bloque es opcional.
  2. El bloque agrega métodos de verdad como distance_to.
  3. Data.define crea una versión inmutable que se construye con palabras clave.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Nil y modismos; paso 24 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →