我有一个变量数组,每个变量都是一个类名字符串数组.我想遍历每个,并用应用的函数的返回值替换这些变量的值.
我尝试使用#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
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做:
choose_one_classes, add_classes, list_group_classes = [choose_one_classes, add_classes, list_group_classes].map do |var|
var.join(" ")
end
Run Code Online (Sandbox Code Playgroud)
但我希望还有另一种更好的方法.我从技术上讲,我想要做的并不是"很棒",因为我应该坚持不要修改变量,因为良好的功能实践,线程等等.但我很好奇.
编辑
choose_one_classes = "ramjet-transform"
add_classes = "btn btn-md btn-success"
list_group_classes = "list-group list-group-border choose-one-list"
Run Code Online (Sandbox Code Playgroud)
.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]
Run Code Online (Sandbox Code Playgroud)
但是你需要修改每个数组的成员,你只能使用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"]
Run Code Online (Sandbox Code Playgroud)
但是数组没有方法,.join!因为它们的方法.join返回字符串而不是数组.
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |