首页 > 解决方案 > Ruby 变量在函数中无法正常工作

问题描述

我有这个功能:

def find_deleted_number(arr, mixed_arr)

    default = 0

    arr.each do |i|
        if mixed_arr.include?(arr[i]) == true
            default += arr[i]
        else 
            return arr[i]
        end
    end
    return default  
end

find_deleted_number([1,2,3,4,5], [3,4,1,5])
#=> 2 (as expected)

find_deleted_number([1,2,3,4,5,6,7,8,9], [1,9,7,4,6,2,3,8])
#=> 5 (as expected)

find_deleted_number([1,2,3,4,5,6,7,8,9], [5,7,6,9,4,8,1,2,3])
#=> nil (expected 45)

这个想法是让函数检查哪个数字在 arr 中,但不在mixed_arr 中。这一切都很好,但问题是当两个数组相同时,我希望它给我一个数组中每个值的总和(这就是我这样做的原因default += arr[i])。但结果是nil,我不太明白为什么。如果可能的话,我想了解它失败的原因。

标签: rubyloopseach

解决方案


arr.each迭代 的元素arr,而不是索引。因此,您需要更改arr[i]i.

完整的答案是:

def find_deleted_number(arr, mixed_arr)
  default = 0

  arr.each do |i|
    if mixed_arr.include?(i)
      default += i
    else 
      return i
    end
  end

  default  
end

推荐阅读