Ruby 修改实例变量的名称

Ruby 修改实例变量的名称,ruby,Ruby,假设我有@chicken,但我想通过计数循环将其重命名为@chicken1和@chicken2。一旦我用类似于“chicken#{@count}”的东西生成了名称那么如何将输出转换成类似于@chicken1等的东西?Ruby有这样一个任务的方法 class A def initialize @chicken = 'chichen' end def rename count = 1 instance_variable_set(:"@chicken#{count

假设我有@chicken,但我想通过计数循环将其重命名为@chicken1和@chicken2。一旦我用类似于
“chicken#{@count}”的东西生成了名称
那么如何将输出转换成类似于@chicken1等的东西?

Ruby有这样一个任务的方法

class A
  def initialize
    @chicken = 'chichen'
  end

  def rename
    count = 1
    instance_variable_set(:"@chicken#{count}", @chicken)
  end

  def remove
    remove_instance_variable(:@chicken)
  end
end

a = A.new

a.instance_variables #=> [:@chicken]

a.rename

a.instance_variables #=> [:@chicken, :@chicken1]

a.remove

a.instance_variables #=> [:@chicken1]

a.instance_variable_get("@chicken1") #=> "chicken"

这是可以做到的,但你为什么想要这个?听起来你应该用数组来代替。好吧,基本上我正在生成谷歌地图,对我来说,为所有需要输入的数据创建数组太复杂了。实际上,我过早地点击了下面的勾号。。这不是我真正想要的。。我真正想要的是能够使用count创建一个新的实例变量。。甚至是像“@x#{rand()}”这样的随机数,结果也不是问题,因为我能够重命名我的google map div id(使用计数),这就是问题的原因。请不要使用
eval
,除非这是绝对不可避免的<代码>实例变量集在这里就可以了。