我有一个变量数组,每个变量都是一个类名字符串数组.我想遍历每个,并用应用的函数的返回值替换这些变量的值.
我尝试使用#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"
Inpego.. 5
.map!
仅影响此隐式创建的数组,并且等效于以下代码:
all_classes = [choose_one_classes, add_classes, list_group_classes] all_classes.map! { |e| e.length } # all_classes is modified all_classes # [1, 3, 3]
但是你需要修改每个数组的成员,你只能使用bang-method(最后带有惊叹号).这种爆炸方法不一定必须是.map!
,例如:
[choose_one_classes, add_classes, list_group_classes].each do |arr| arr.map! { |e| e.upcase } end choose_one_classes # ["RAMJET-TRANSFORM"] add_classes # ["BTN", "BTN-MD", "BTN-SUCCESS"] list_group_classes # ["LIST-GROUP", "LIST-GROUP-BORDER", "CHOOSE-ONE-LIST"]
但是数组没有方法,.join!
因为它们的方法.join
返回字符串而不是数组.
.map!
仅影响此隐式创建的数组,并且等效于以下代码:
all_classes = [choose_one_classes, add_classes, list_group_classes] all_classes.map! { |e| e.length } # all_classes is modified all_classes # [1, 3, 3]
但是你需要修改每个数组的成员,你只能使用bang-method(最后带有惊叹号).这种爆炸方法不一定必须是.map!
,例如:
[choose_one_classes, add_classes, list_group_classes].each do |arr| arr.map! { |e| e.upcase } end choose_one_classes # ["RAMJET-TRANSFORM"] add_classes # ["BTN", "BTN-MD", "BTN-SUCCESS"] list_group_classes # ["LIST-GROUP", "LIST-GROUP-BORDER", "CHOOSE-ONE-LIST"]
但是数组没有方法,.join!
因为它们的方法.join
返回字符串而不是数组.