因此,通过上述练习并在 GitHub 上找到了这个解决方案。
def count_between arr, lower, upper
return 0 if arr.length == 0 || lower > upper
return arr.length if lower == upper
range = (lower..upper).to_a
arr.select { |value| range.include?(value) }.length
end
我理解前三行的含义以及它们为什么返回它们所做的值。我想了解的是以下代码行。
第 4 行(下)将“范围”定义为变量,并使用下...上作为范围变量(刚刚发现您不需要将整数值放入范围中。“.to_a”是什么意思,似乎在 ruby 文档中找不到它,它有什么作用?
range = (lower..upper).to_a
第 5 行(如下)使用 Array#select 方法,如果该值包含在此范围内,则选择此值,然后给我所有选定值的 Array#length,但我不太明白 A. 什么 |价值| 正在做什么以及这意味着什么。B. range.include?(value) 表示这个值是否包含在我假设的这个范围内。
arr.select { |value| range.include?(value) }.length