Métodos de clase

Ya sabemos definir métodos en las instancias, las clases, los mixins y las autoclases: siempre que definamos métodos en estos lugares, serán las instancias los que entenderán los mensajes correspondientes.

¿Ahora bien, y si queremos que sea la clase la que entienda un cierto mensaje? ¿Cómo hace, por ejemplo, la clase Time para entender el mensaje el mensaje now (Time.now)? ¡Definamos métodos de clase!

class Time
  # notá el self delante del now
  def self.now
    # ...
  end
end

Veamos si se entiende: agregá a la clase Array el método zeros, que devuelve un array formado por n 0s:

 Array.zeros(10)
=> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
¡Dame una pista!

Este problema se puede resolver de varias formas:

  • Empleando el mensaje * que también entienden los arrays: ["hola"] * 2
  • Empleando el mensaje new que entiende la clase array: Array.new(2, "hola")
  • Empleando el mensaje times que entiende la clase array: 2.times.map { "hola" }

Tenés que iniciar sesión antes de empezar a enviar tus soluciones