3
我需要返回的短切版本匹配
[1, 2, 3, 4, 5, 6, 7, 8].select{|e| e % 2 == 0}
這是[2, 4, 6]
,前三個元素,但不嘗試7
和8
。我希望它採取的形式
select_some([1, 2, 3, 4, 5, 6, 7, 8], 3){|e| e % 2 == 0}
我有一個解決辦法如下:
def select_some(array, n, &block)
gather = []
array.each do |e|
next unless block.call e
gather << e
break if gather.size >= n
end
gather
end
但有內置到Ruby的東西,執行該短切?請不要建議我在陣列上修補一個方法來實現array.select_some
。
您也可以使用'first(3)'而不是'take(3)'來獲得一個數組。 – Stefan
當我檢查上述表達式的返回值時,爲什麼它返回一個枚舉數而不是數組?當我使用'first(3)' –
@WandMaker時,它是有效的,因爲'take'也是懶惰的。 – Stefan