typestar

Módulos y mixins en Ruby

Compartir comportamiento entre clases sin herencia.

# un módulo guarda comportamiento; include lo mezcla en cualquier clase
module Greetable
  def greet
    "hi, I am #{display_name}"
  end
end

class Robot
  include Greetable

  def initialize(id)
    @id = id
  end

  def display_name
    "unit-#{@id}"
  end
end

puts Robot.new(7).greet

Cómo funciona

  1. Un módulo define métodos sin una clase propia.
  2. include mezcla el módulo en una clase como métodos de instancia.
  3. El mixin llama a display_name, que la clase anfitriona provee.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
262
Tokens
45
Ritmo de tres estrellas
85 tpm

Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 32 segundos.

Escribe este fragmento

Paso 3 de 3 en Clases y módulos; paso 21 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →