当前位置:  开发笔记 > 编程语言 > 正文

Ruby,循环遍历变量名称数组,将方法应用于每个变量并替换变量值

如何解决《Ruby,循环遍历变量名称数组,将方法应用于每个变量并替换变量值》经验,为你挑选了1个好方法。

我有一个变量数组,每个变量都是一个类名字符串数组.我想遍历每个,并用应用的函数的返回值替换这些变量的值.

我尝试使用#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返回字符串而不是数组.



1> Inpego..:

.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返回字符串而不是数组.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有