当前位置:  开发笔记 > 后端 > 正文

单身方法与类方法

如何解决《单身方法与类方法》经验,为你挑选了3个好方法。

类方法和单例方法是相同还是不同?这是一个例子.

class C
  def self.classmethod
    puts "class method #{self}"
  end
end

C.classmethod  # class method C
c = C.new

def c.singletonmethod
  puts "instance method #{self}"
end

c.singletonmethod  # instance method #

VKatz.. 17

Ruby中发生的大多数事情都涉及类和模块,包含实例方法的定义

class C
  def talk
    puts "Hi!"
  end
end

c = C.new
c.talk
Output: Hi!

但正如您之前看到的(甚至比您在类中看到实例方法更早),您还可以直接在单个对象上定义单例方法:

obj = Object.new
def obj.talk
  puts "Hi!"
end
obj.talk
#377
#Output: Hi!

在给定对象上定义单例方法时,只有该对象可以调用该方法.正如您所见,最常见的单例方法类型是类方法 - 一种基于个体添加到Class对象的方法:

class Car
  def self.makes
    %w{ Honda Ford Toyota Chevrolet Volvo }
  end
end

但任何对象都可以添加单例方法.基于每个对象定义方法驱动行为的能力是Ruby设计的标志之一.

单身人士课程

单例类是匿名的:虽然它们是类对象(类Class的实例),但它们会自动弹出而不会给出名称.尽管如此,您可以打开单例类的类定义主体,并向其添加实例方法,类方法和常量,就像使用常规类一样.

注意:

Every object has two classes:

■它是一个实例的类

■它的单身人士课程

-------------------------------------------------- --------------

最后我强烈建议你观看.

1:Ruby对象模型和元编程有关的详细信息singleton method vs. class method ruby

2:MetaProgramming - 扩展Ruby以获得乐趣和利润 -Dave Thomas

希望这能帮到你!!!



1> VKatz..:

Ruby中发生的大多数事情都涉及类和模块,包含实例方法的定义

class C
  def talk
    puts "Hi!"
  end
end

c = C.new
c.talk
Output: Hi!

但正如您之前看到的(甚至比您在类中看到实例方法更早),您还可以直接在单个对象上定义单例方法:

obj = Object.new
def obj.talk
  puts "Hi!"
end
obj.talk
#377
#Output: Hi!

在给定对象上定义单例方法时,只有该对象可以调用该方法.正如您所见,最常见的单例方法类型是类方法 - 一种基于个体添加到Class对象的方法:

class Car
  def self.makes
    %w{ Honda Ford Toyota Chevrolet Volvo }
  end
end

但任何对象都可以添加单例方法.基于每个对象定义方法驱动行为的能力是Ruby设计的标志之一.

单身人士课程

单例类是匿名的:虽然它们是类对象(类Class的实例),但它们会自动弹出而不会给出名称.尽管如此,您可以打开单例类的类定义主体,并向其添加实例方法,类方法和常量,就像使用常规类一样.

注意:

Every object has two classes:

■它是一个实例的类

■它的单身人士课程

-------------------------------------------------- --------------

最后我强烈建议你观看.

1:Ruby对象模型和元编程有关的详细信息singleton method vs. class method ruby

2:MetaProgramming - 扩展Ruby以获得乐趣和利润 -Dave Thomas

希望这能帮到你!!!



2> Jörg W Mitta..:

没有区别.Ruby中没有类方法."类方法"只是我们人类称为单例方法的名称,如果该对象恰好是Class该类的实例.



3> archana..:

在ruby类中也是一个对象.所以,在你的例子classmethod是对象单身方法C,并singletonmethod为对象的单方法c.

我强烈推荐Paolo Perrotta的书"Metaprogramming Ruby".

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有