我为扩展写了两种语法,但是出现了不同的行为,一个返回 50,另一个返回 70,谁能解释为什么?
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
最佳答案
在类声明期间调用 extend
的第一个片段中,i. e.在 Toy
对象上,这显然是一个类。它与调用 Toy.extend(Discount)
相同。
在第二个片段中,您扩展
Toy.new
,它显然是一个Toy
实例。
关于ruby - ruby 的扩展语法是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42383487/