gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:48 25 4
gpt4 key购买 nike

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

我尝试使用 #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"

最佳答案

.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 方法(末尾带有感叹号)来完成。这样的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 返回字符串而不是数组。

关于arrays - Ruby,遍历变量名数组,将方法应用于每个并替换变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com