寻找可以遍历列表并返回第一个转换后的值的方法。本质:
[1, 2, 3, 4].magic { |i|
puts "Checking #{i}"
i ** 2 if i > 2
}
Checking 1
Checking 2
Checking 3
#=> 9
这里的目标是它像find
一样工作,并在获得第一个返回值后停止遍历列表。(注意它从不检查4
)但也从块中返回值。(返回9
而不是3
)
这里的问题是,块执行一些复杂的逻辑,所以我不想映射到整个数组,但我也想使用所述逻辑的值。
可以使用期望的返回值中断循环。这就是你要找的吗?
array = [1, 2, 3, 4]
array.map { |element| break element ** 2 if element > 2 }
# returns 9