实例方法与类方法有什么区别?model里的方法在controller里面怎么调用?这些很基础的问题是必须要搞清楚的。
class Object
def abc
p "instance abc"
end
def self.abc
p "class abc"
end
end
obj = Object.new
obj.abc # instance abc
Object.abc # class abc
类方法只有类本身可以调用,实例方法是类的一个实例调用。
在ruby中,类方法是一种特殊的单例方法(singleton method)
class C # 定义类C
def a_method # 定义实例方法 a_method
puts "C#a_method"
end
def self.a_class_method # 定义类方法 a_class_method
puts "C#a_class_method"
end
end
class D < C # 定义类D,继承自类C
end
obj = D.new # 创建类D的实例对象obj
obj.a_method # 实例方法
D.a_class_method # 类方法
class Object
def eigenclass
class << self
self
end
end
end
class << obj
def a_singleton_method # 给obj定义单例方法 a_singleton_method
puts 'obj#a_singleton_method'
end
end
puts obj.a_singleton_method
《ruby元编程》
QRコードをスキャンしてWeChatを追加します