我正在寻找一种类似于javascript的Array.prototype.every
方法的方法,但是在ruby中。在javascript中,它遍历数组并返回true,如果每个元素导致回调返回true。关于它的一个好处是,如果其中一个元素未通过测试,它就不会在整个数组上进行迭代。相反,它会短路并返回false。
function isBigEnough(element) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); //=> false
[12, 54, 18, 130, 44].every(isBigEnough); //=> true
我知道我可以通过while
循环等低级迭代器获得类似的效果。
def isBigEnough(arr)
i = 0
result = true
while i < arr.length
if arr[i] >= 10
i++
else
i = arr.length
result = false
end
end
return result
end
is_big_enough([12, 5, 8, 130, 44]) #=> false
is_big_enough([12, 54, 18, 130, 44]) #=> true
但我认为红宝石会有一些东西。任何人都知道如何获得同样的效果?
答案 0 :(得分:3)
答案 1 :(得分:0)
select [Parent #],
[Child #],
[Parent Name],
[Child Name]
from
(
select *,
ROW_NUMBER() OVER(PARTITION BY [Child #] ORDER BY [Child #]) AS rn
from mytable
) tab
where rn = 1;
Enumerable#all?
is_big_enough = -> element { element >= 10 } [12, 5, 8, 130, 44].all?(&is_big_enough) # => false [12, 54, 18, 130, 44].all?(&is_big_enough) # => true
→[{ |obj| block } ]
或true
将集合的每个元素传递给给定的块。如果块永远不会返回
false
或true
,则该方法返回false
。如果没有给出块,Ruby会添加一个nil
的隐式块,当{1}}或{{1}没有任何集合成员时,{ |obj| obj }
将导致all?
返回true
}。false