Ruby 类变量 [英] Ruby class variables
本文介绍了Ruby 类变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
ruby 类实例的东西让我很头疼.考虑到这一点,我理解...
The ruby class-instance stuff is giving me a headache. I understand given this...
class Foo
@var = 'bar'
end
...@var
是所创建类的实例上的变量.
...that @var
is a variable on the created class's instance.
但是如何创建子类可覆盖的类变量?
But how do I create a sub-class overridable class variable?
以下是我将在 Python 中执行的操作的示例:
Here is an example of what I would do in 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 中做同样的事情?
How do I do the same thing in ruby?
推荐答案
为了对比@khell 的回答,这里使用了 Class 对象上的实例变量:
To contrast @khelll's answer, this uses instance variables on the Class objects:
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"
赋予实例对类的实例变量的读访问权限:
to give instances read-access to the class's instance variable:
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 类变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文