gpt4 book ai didi

ruby - 在多个对象之间共享一个变量

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

class Collie
def speak
puts dog_generic
end
end

class Greyhound
def speak
puts dog_generic
end
end

class Labrador
def speak
puts dog_generic
end
end

dog_generic = "Woof"

chep = Collie.new
wrex = Collie.new
speedy = Greyhound.new
faithful = Labrador.new

chep.speak #=> Woof
wrex.speak #=> Woof
speedy.speak #=> Woof
faithful.speak #=> Woof

我希望最后三种方法都返回“Woof”。但是,这段代码会调用undefined variable dog_generic 错误。这似乎是因为即使是全局变量也不可用于对象。如果我要将 dog_generic 的所有实例更改为 @@dog_generic,它会起作用,但很少使用 @@ variables,并且基于光是这一点,我就忍不住想我做错了。

如何在多个对象之间共享一个变量?

不,我不想将“Woof”字符串作为参数传递给每个对象。

最佳答案

通常,人们会使用继承来提供这种行为:

class Dog
def speak
puts "Woof"
end
end

class Collie < Dog
# whatever behavior that is specific to Collie here
end

chep = Collie.new
chep.speak #=> Woof

关于ruby - 在多个对象之间共享一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19484694/

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