gpt4 book ai didi

ruby - ruby 的扩展语法是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:10 25 4
gpt4 key购买 nike

我为扩展写了两种语法,但是出现了不同的行为,一个返回 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com