gpt4 book ai didi

arrays - 将字符串存储在 ruby​​ 的数组中

转载 作者:太空宇宙 更新时间:2023-11-03 16:15:28 26 4
gpt4 key购买 nike

我正在尝试编写一种方法,一次将一个字符串更改为另一个字母。但是,我从来没有注意到在 ruby​​ 中,如果将字符串变量推送到数组,它似乎推送字符串变量的地址而不是字符串。

def mutate_my_strings(s1,s2)
#your code here

str1 = s1.to_s
str2 = s2.chars
ret = []

puts str1
ret.push(str1)

s1.chars.each_with_index do |q,idx|
str1[idx] = str2.shift
ret.push(str1)
end
return ret.join("\n")
end

mutate_my_strings("bubble gum", "turtle ham")

此输出显示可枚举修改了 str1,但 puts 的输出将字符串“bubble gum”变成了“turtle ham” 这在数组中并非如此。在数组中修改整个字符串:

bubble gum
"tubble gum"
"tubble gum"
"turble gum"
"turtle gum"
"turtle gum"
"turtle gum"
"turtle gum"
"turtle hum"
"turtle ham"
"turtle ham"
=> "turtle ham\nturtle ham\nturtle ham\nturtle ham\nturtle ham\nturtle ham\nturtle ham\nturtle ham\nturtle ham\nturtle ham\nturtle ham"

最佳答案

ret.push(str1) 替换为 ret.push(str1.dup) 以每次创建一个新字符串。

这里有一个更优雅的解决方案:

def mutate_strings(s1, s2)
(0...s1.size).map { |i| s2[0..i] + s1[i+1..-1] }.join("\n")
end

puts(mutate_strings('bubble gum', 'turtle ham'))

关于arrays - 将字符串存储在 ruby​​ 的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268161/

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