Ruby中的单例方法

Ruby| 单例方法

在上一期冻结对象教程中,我们研究了在Ruby中冻结对象的方法。我们不能为冻结的对象分配单例方法,但是什么是单例方法,它们具有什么属性以及如何创建它们?在本文其余的内容中,您将获得所有上述问题的答案。成功阅读本教程后,您将非常了解了解Ruby中的Singleton方法所必需的内容。

我们知道对象的行为由它所属的类决定。它只是意味着实例将能够调用该特定类中定义的方法。但是有时候我们希望我们的对象应该具有某些独特的行为,或者我们的对象应该具有其他同类对象不具有的方法。在这种情况下,单例方法就出现了。在图形用户界面中使用单例方法,其中在不同按钮的click事件中执行不同的操作。在Ruby中,我们有特权向对象提供其方法,或者可以说我们可以在Ruby中定义单例方法。

为了更好地理解该概念,让我们在说明程序代码的帮助下对此进行理解。

范例1:

=begin
Ruby program to demonstrate singleton methods
=end	

class Example
  def prnt
    puts "Go Corona! Corona Go!"
  end
end

object1 = Example.new
object2 = Example.new

def object2.prnt
  puts "Corona bhag jaa!"
end

puts "singleton method demonstration"

puts "Invoke from object1:"
object1.prnt
puts "Invoke from object2:"
object2.prnt

输出结果

singleton method demonstration
Invoke from object1:
Go Corona! Corona Go!
Invoke from object2:
Corona bhag jaa!

说明:

在上面的代码中,您可以看到我们已经为Example类的object2重新定义了方法prnt。该prnt方法不过是对对象2表现不同的单例方法。

范例2:

=begin
  Ruby program to demonstrate singleton methods
=end	

object1 = String.new
object1 = "includehelp"
object2 = String.new
object2 = "hrithik"

def object2.size
	return "Corona bhag jaa!"
end

puts "singleton method demonstration"

puts "Invoke from object1:"
puts object1.size
puts "Invoke from object2:"
puts object2.size

输出结果

singleton method demonstration
Invoke from object1:
11
Invoke from object2:
Corona bhag jaa!

说明:

在上面的代码中,您可以观察到我们可以为属于库类的对象定义单例方法。我们的代码不是打印object2的大小,而是打印“ Corona bhag jaa!”,因为这是由该方法返回的。