【发布时间】:2015-12-16 17:20:16
【问题描述】:
我有一个变量数组,每个变量都是一个类名字符串数组。我想循环遍历每个变量,并将这些变量的值替换为应用函数的返回值。
我尝试使用 #map! 进行对象修改,但这似乎不起作用。
choose_one_classes = ["ramjet-transform"]
add_classes = ["btn", "btn-md", "btn-success"]
list_group_classes = ["list-group", "list-group-border", "choose-one-list"]
[choose_one_classes, add_classes, list_group_classes].map! do |var|
var.join(" ")
end
我知道我可以这样做:
choose_one_classes, add_classes, list_group_classes = [choose_one_classes, add_classes, list_group_classes].map do |var|
var.join(" ")
end
但我希望有另一种更好的方法。我想从技术上讲,我想做的事情并不“伟大”,因为我应该坚持不修改变量,因为良好的功能实践、线程等。但我很好奇。
编辑
预期结果:
choose_one_classes = "ramjet-transform"
add_classes = "btn btn-md btn-success"
list_group_classes = "list-group list-group-border choose-one-list"
【问题讨论】:
-
您可以编辑您的问题以包含您的预期结果吗?
-
问题是在 Ruby 中没有按名称分配实例变量的好方法。这几乎是设计使然。你甚至不能再用
eval做到这一点。正如您所指出的,您尝试做的事情并不“好”。如果您能更详细地解释您试图通过这样做解决的问题,我们可以帮助您找到更好的解决方案? -
@Jordan,我认为您的意思是“......分配一个局部变量......”。我最初的想法是相同的,但是您的论点与创建局部变量(现在无法完成)有关,而不是以编程方式更改现有局部变量的值,这是另一回事。
-
是的,你说得对,我的意思是“局部变量”!
-
如果您发现至少一个答案有用,请考虑选择您认为最有帮助的答案。