ruby - 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
,我不太明白为什么。如果可能的话,我想了解它失败的原因。
解决方案
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
推荐阅读
- python - 在opencv中绘制轮廓
- augmented-reality - AR.js - Barcode Marker 仅检测 id=0 的标记
- sql-server - 使用通配符搜索并返回特定列时索引如何工作
- angular - 如何在模板中显示状态 this.appRef.isStable?
- javascript - 带有 create-react-app 的多模块项目
- apache-spark - 为什么 Spark Structured Streaming 非常适合实时操作?
- r - Issues with generating ggiNEXT graph
- c# - .NET PLINQ 与异步性能
- jquery - daterangepicker 最小日期的日期限制
- sql-server - 根据 B 列中的值更新 A 列