【发布时间】:2011-07-25 16:09:09
【问题描述】:
在 Ruby 中,我有这个类:
class Position
attr_reader :x, :y
def initialize(x, y)
@x, @y = x, y
end
end
我想做的是使用符号访问 x 和 y 变量,如下所示:
axis = :x
pos = Position.new(5,6)
#one way:
pos.axis # 5 (pos.x)
#other way:
pos.get(axis) # 5 (pos.x)
感谢this question 我找到了这段代码,我可以实现第二种行为。
#...
class Position
def get(var)
instance_variable_get(("@#{var}").intern)
end
end
但它看起来丑陋且效率低下(尤其是将符号转换为字符串并返回符号)。有没有更好的办法?
【问题讨论】:
-
x和y不是变量,而是方法:-) -
对,我还是习惯了。 :)