`arr.length `在循环外工作,但在循环内会导致错误

  • 本文关键字:循环 错误 工作 arr length ruby
  • 更新时间 :
  • 英文 :


我正在尝试完成一个hackerbank挑战。当我尝试在循环中使用puts arr.length时,

n = gets.strip.to_i
arr = gets.strip
arr = arr.split(' ').map(&:to_i)
n.times do |i|
  puts arr.length
  arr = arr[i] - 2
  if arr[i] <= 0
    arr[i].delete
  end
end

我得到一个错误:

!in `block in': undefined method `length' for 3:Fixnum (NoMethodError)

我不明白,因为arr.length在循环之外工作。为什么我会出现此错误?

您在此处将arr重新分配为Fixnumarr = arr[i] - 2。因此出现错误

您已经在循环中重新分配了arr,我假设通过循环的第一次传递已经成功,但在第二次传递中,arr现在是一个整数。

您应该在循环中使用一个不同的变量名uniq

最新更新