Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 调用实例方法或类方法_Ruby - Fatal编程技术网

Ruby 调用实例方法或类方法

Ruby 调用实例方法或类方法,ruby,Ruby,我有一门课: Class Temp def Temperature puts "It's hot" end end 我可以举一个例子: mytemp = Temp.new 我可以在它上面调用方法Temperature。如何知道调用的是实例类还是类方法?因为需要调用.new来实例化该类,Temperature是一个实例方法。您可以通过在方法名称-def self.Temperature后面附加一个self来定义类方法。然后您可以调用它,而不必实例化该类:Temp.Temperat

我有一门课:

Class Temp
  def Temperature
   puts "It's hot"
  end
end
我可以举一个例子:

mytemp = Temp.new

我可以在它上面调用方法
Temperature
。如何知道调用的是实例类还是类方法?

因为需要调用
.new
来实例化该类,
Temperature
是一个实例方法。您可以通过在方法名称-
def self.Temperature
后面附加一个
self
来定义类方法。然后您可以调用它,而不必实例化该类:
Temp.Temperature

让我们定义以下类。我像大家一样定义了以小写字母开头的方法

class Temp
  def temperature
   puts "I am instance"
  end

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

->“我就是一个例子”


->“我在上课”


->“我在上课”


希望它能有所帮助并使事情变得清楚:)

什么是实例类?您的代码是无效的。当然,真正的答案是Ruby中没有类方法。Ruby只有一种方法:实例方法。真正的问题是,这些方法是在什么类中定义的,您在哪个实例上调用它们?
t = Temp.new
t.temperature
Temp.temperature
t = Temp.new
t.class.temperature