Tengo una clase:

Class Temp
  def Temperature
   puts "It's hot"
  end
end

Puedo llamar a una instancia de eso:

mytemp = Temp.new

Puedo llamar al método Temperature en él. ¿Cómo sé si estoy llamando a una clase de instancia o métodos de clase?

-1
user6526412 26 jul. 2016 a las 05:20

2 respuestas

La mejor respuesta

Definamos la siguiente clase. Definí métodos comenzando con minúsculas como lo hace todo el mundo.

class Temp
  def temperature
   puts "I am instance"
  end

  def self.temperature
   puts "I am class"
  end
end

t = Temp.new
t.temperature

-> "Yo soy instancia"


Temp.temperature

-> "Soy clase"


t = Temp.new
t.class.temperature

-> "Soy clase"

Espero que ayude y aclare las cosas :)

1
Yuri Dymov 26 jul. 2016 a las 02:37

Dado que necesita llamar a .new para crear una instancia de la clase, Temperature es un método de instancia. Usted define métodos de clase agregando un self al nombre del método - def self.Temperature. Entonces lo llamaría sin instanciar la clase: Temp.Temperature.

1
max pleaner 26 jul. 2016 a las 02:30