0

@chickenがあるとしましょう。ただし、カウントループを介して@chicken1と@chicken2に名前を変更したいと思います。次のような名前を生成したら"chicken#{@count}"、出力を@ chicken1などに変換するにはどうすればよいですか?

4

1 に答える 1

0

Rubyには、そのようなタスクのためのメソッドremove_instance_variableがあります

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"
于 2012-09-15T08:50:26.067 に答える