试图推送到数组,覆盖每个值

时间:2016-03-14 14:48:24

标签: arrays ruby overwrite

我想创建一个anagram解算器。这是我的代码:

def permut(word)
  for i in 1..$laenge
    if i != $laenge
      word[$laenge-i], word[$laenge-i-1] = word[$laenge-i-1],  word[$laenge-i]
      $output.push word
      $y += 1
    end
  end
end

我不应该使用全局变量,for中的get_input - 循环会卡住,但它只是出于学习目的,我的重点只是在数组问题,我用rdebug调试它。

当我将混合字的值推送到数组时,它会覆盖它的所有值。我通过提供类似Array[y]的索引并在每次执行y循环时递增for,或者仅使用Array.push,然后使用单词作为字符串。

1 个答案:

答案 0 :(得分:1)

你一遍又一遍地改变同一个字符串。

ar = []
word = "abc"
ar.push(word)
word[0], word[1] = word[1], word[0]
p ar # => ["bac"]

尝试在数组中保存变异字符串的副本:

ar.push(word.dup)