gpt4 book ai didi

ruby - 如何防止方法改变其参数?

转载 作者:数据小太阳 更新时间:2023-10-29 07:29:10 25 4
gpt4 key购买 nike

我想使用的方法是 gem并在此处获取(第 17-42 行):https://github.com/rails/rails/blob/master/railties/lib/rails/generators/actions.rb

如您所见,name被分配给第 19 行的第一个 arg,然后是 message分配给 name在第 23 行,最后 message在第 26 行突变为 << .不幸的是,这意味着我作为第一个参数传入的字符串在方法之外发生了变化。

我有一个数组散列,并按如下方式迭代它们:

groups = { foo: %w(foo, bar), bar: %w(foobar) }

groups.each do |group, gems|
gems.each do |name|
gem(name, "42")
end
end

由于 gem 内部的突变,我的哈希看起来像这样:

groups => { foo: ["foo (42)", "bar (42)"], bar: ["foobar (42)"] }

如何在不破坏方法的情况下防止这些字符串(以及散列及其数组)发生变异?

最佳答案

您无法阻止该方法改变其参数(除非通过提交错误报告,因为这是它不应该做的事情)。

您可以做的是使用您的字符串的克隆来调用该方法,如下所示:

gem(name.dup, "42")

关于ruby - 如何防止方法改变其参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10001031/

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