Ruby – 单例方法
Ruby 的单例方法是只能为特定对象定义的方法,即它适用于单个对象。这些类型的方法属于单例类或特征类,并且仅可用于单个对象,这与可用于类的所有实例的其他方法不同。
当对象需要拥有该类的其他对象不拥有的某些独特行为或方法时,此功能更有用。
句法:
def Obj.GFG
# Method body
end
在这里,GFG 是一个单例方法,而 Obj 是一个对象。
单例方法的概念可以通过下面的例子来理解:
示例 1:
# Ruby program to demonstrate the use
# of singleton methods
class Vehicle
def wheels
puts "There are many wheels"
end
end
# Object train
train = Vehicle.new
# Object car
car = Vehicle.new
# Singleton method for car object
def car.wheels
puts "There are four wheels"
end
puts "Singleton Method Example"
puts "Invoke from train object:"
train.wheels
puts "Invoke from car object:"
car.wheels
输出:
Singleton Method Example
Invoke from train object:
There are many wheels
Invoke from car object:
There are four wheels
解释:
可以看到,对于 Vehicle 类的 car 对象,方法wheels 已经被重新定义。这种车轮方法只不过是一种显示汽车不同行为的单例方法。
示例 2:
# Ruby program to demonstrate the use
# of singleton methods
o1 = String.new
# object1(o1)
o1 = "GeeksforGeeks"
o2 = String.new
# object2(o2)
o2 = "GoodExample"
# Singleton method of object o2
def o2.size
return "Size does not matter"
end
puts "Singleton Method Example:"
puts "Invoke from the object(o1):"
# Returns the size of string "Example1"
puts o1.size
puts "Invoke from the object(o2):"
# Returns the o2.size method’s
# return statement
puts o2.size
输出:
Singleton Method Example:
Invoke from the object(o1):
13
Invoke from the object(o2):
Size does not matter
解释:
可以为 String 等库类的对象定义 Singleton 方法。上面的代码不是打印对象 o2 的大小,而是打印“大小无关紧要!”因为这是 o2.size 方法的返回值。