在Ruby中使用字符串作为变量/对象名

在Ruby中使用字符串作为变量/对象名,ruby,Ruby,我在处理分形。从一个矩形开始,该形状将按给定的衰减率减小。我将其设置为执行给定场景的前10次迭代,每个场景如下所示: y_1 = dec_y(y_1) y_2 = dec_y(y_2) a_y = [y_1, y_2] rect_1 = TkcRectangle.new(canvas, [0,0], a_y) define_method(method_name) do your code goes here end 其中dec_y定义如下: def dec_y(y) to_ret

我在处理分形。从一个矩形开始,该形状将按给定的衰减率减小。我将其设置为执行给定场景的前10次迭代,每个场景如下所示:

y_1 = dec_y(y_1)
y_2 = dec_y(y_2)
a_y = [y_1, y_2]
rect_1 = TkcRectangle.new(canvas, [0,0], a_y)
define_method(method_name) do
  your code goes here
end
其中
dec_y
定义如下:

def dec_y(y)
    to_ret = y / $rate
    return to_ret
end
我想将第一个代码片段转换成一个函数/方法(不完全确定Ruby术语是什么…),这样每次迭代都只是引用一个方法的一行,这使得问题更具可扩展性。但是,我需要每个
TkcRectangle
都有一个不同的名称。按照我想要的设置方式,每个
TkcRectangle
将具有相同的名称。但是,如果我可以将对象的名称设置为作为参数传递的字符串,那么就不会有问题

如何用给定的字符串定义对象的名称?

编辑:代码还没有经过测试,但会告诉您一些想法

您可以使用数组而不是索引来代替命名每个元素

rectangles_array = Array.new
for each loop
  rectangles_array << create_rectangle_object(y_1, y_2, canvas)
end for each loop

def dec_y(y)
  to_ret = y / $rate
  return to_ret
end

def create_rectangle_object(y_1, y_2, canvas)
  return TkcRectangle.new(canvas, [0,0], [dec_y(y_1), dec_y(y_2)])
end
method\u name
为任意字符串,
&block
为ruby代码块;通常它看起来像这样:

y_1 = dec_y(y_1)
y_2 = dec_y(y_2)
a_y = [y_1, y_2]
rect_1 = TkcRectangle.new(canvas, [0,0], a_y)
define_method(method_name) do
  your code goes here
end

你能解释一下for循环到底在做什么吗?当你开始解决下一个问题时,我怀疑你是否需要命名你的对象。该指数应足够。对不起,如果我误解了你的问题。不,我想我明白了。。。我应该可以让这个工作,谢谢:)