gpt4 book ai didi

Ruby 类变量

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:42 25 4
gpt4 key购买 nike

ruby 类实例的东西让我很头疼。我明白了……

class Foo
@var = 'bar'
end

...@var 是已创建类实例上的一个变量。

但是如何创建一个子类可重写的类变量呢?

这是我将在 Python 中执行的操作的示例:

class Fish:
var = 'fish'
def v(self):
return self.var

class Trout(Fish):
var = 'trout'

class Salmon(Fish):
var = 'salmon'

print Trout().v()
print Salmon().v()

哪些输出:

trout
salmon

我如何在 ruby​​ 中做同样的事情?

最佳答案

为了对比@khelll 的回答,这在 Class 对象上使用了实例变量:

class Fish
# an instance variable of this Class object
@var = 'fish'

# the "getter"
def self.v
@var
end

# the "setter"
def self.v=(a_fish)
@var = a_fish
end
end

class Trout < Fish
self.v = 'trout'
end

class Salmon < Fish
self.v = 'salmon'
end

p Trout.v # => "trout"
p Salmon.v # => "salmon"

编辑:赋予实例对类的实例变量的读取权限:

class Fish
def type_of_fish
self.class.v
end
end

p Trout.new.type_of_fish # => "trout"
p Salmon.new.type_of_fish # => "salmon"

关于Ruby 类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2084490/

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