小编jnv*_*jnv的帖子

使用其名称(作为符号)访问实例变量

在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)

感谢我在这段代码中发现的这个问题,我可以实现第二种行为.

#...
class Position
  def get(var)
    instance_variable_get(("@#{var}").intern)
  end
end
但它看起来很丑陋和低效(特别是将符号转换为字符串并返回符号).有没有更好的办法?

ruby variables class

6
推荐指数
2
解决办法
5605
查看次数

标签 统计

class ×1

ruby ×1

variables ×1