module Discount
def cost
super + 20
end
end
class Toy
extend Discount
def cost
50
end
end
# check
Toy.new.cost #=> 50
可是:
module Discount
def cost
super + 20
end
end
class Toy
def cost
50
end
end
# check
Toy.new.extend(Discount).cost #=>70
答案 0 :(得分:2)
在第一个片段中,你在课堂宣言中调用extend
,i。即在Toy
对象上,这显然是一个类。它与调用Toy.extend(Discount)
相同。
在第二个代码段中extend
Toy.new
,显然是Toy
个实例。
答案 1 :(得分:1)
Object #extend简单就是快捷方式,它包含接收器本征类中的模块。
有关本征类的更多信息,请转至https://en.wikipedia.org/wiki/Metaclass#In_Ruby