gpt4 book ai didi

Ruby - Array.find,但返回 block 的值

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:21 26 4
gpt4 key购买 nike

我有一个数组,我想要第一个 block 的结果返回一个真值(又名,不是零)。问题是,在我的实际用例中,测试有一个副作用(我实际上是在一组队列上迭代,然后从顶部弹出),所以我不需要在第一次成功之后评估 block 。

a,b,c = [1,2,3]

[a,b,c].first_but_value{ |i| (i + 1) == 2 } == 2

a == 2
b == 2
c == 3

有什么想法吗?

最佳答案

break 很丑 =P

如果你想要一个函数式方法,你需要一个惰性 map :

[nil, 1, 2, 3].lazy.map{|i| i && i.to_s}.find &:itself   
# => "1"

如果你不相信它没有遍历整个数组,打印出来看看:

[nil, 1, 2, 3].lazy.map{|i| (p i) && i.to_s}.find  &:itself
# nil
# 1
# => "1"

i.to_s 替换为您的 block 。

关于Ruby - Array.find,但返回 block 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24900696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com