实例方法与类方法
created_at: 2016-11-28  

实例方法与类方法有什么区别?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元编程》

0 赞  
back
no comment yet
回复成功

回复成功

请输入内容