【发布时间】:2014-11-07 19:50:50
【问题描述】:
下面是一些方法的代码,该方法应该最终将一个加扰的单词与一个小的单词“字典”进行比较,然后返回未加扰的单词。请记住,此方法是不完整的。
def word_unscrambler(str, words)
p words
comparison = words.each_index {|i| words[i] = words[i].chars.sort.join}
p words
string = str.chars.join
comparison.each_index do |i|
return words[i] if string == comparison[i]
end
end
当我使用 irb 和参数“words”的水果列表测试该方法时,第一个“p words”输出:
["apple", "orange", "pineapple"]
第二个“p words”输出:
["aelpp", "aegnor", "aeeilnppp"]
我很困惑数组“words”的值在“comparison”的赋值语句之后发生了变化。是的,“比较”被分配给“单词”的修改,但根据我的经验,赋值语句只为赋值运算符左侧的变量赋值。 尽管这与我在时间编程中学到的一切背道而驰,但我尝试通过创建另一个具有相同值的数组(称为“复制”)来隔离“单词”。通过对我的代码的这种修改,我最终仍然得到了带有重新分配值的“单词”。我一定遗漏了方法参数或变量的一些基本方面。
那么,造成这种变化的原因是什么?
【问题讨论】:
标签: ruby variables methods arguments variable-assignment