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