Ruby中获取第一个可枚举元素的最快方法是什么?

Nat*_*ong 38 ruby arrays enumerable

Ruby中获取第一个可枚举元素的最快方法是什么?

例如:

arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first  # => 107
Run Code Online (Sandbox Code Playgroud)

我想这样做而不会遍历整个阵列select,因为我只需要第一场比赛.

我知道我可以做一个each并且取决于成功,但我认为有一种本地方法可以做到这一点; 我只是没有在文档中找到它.

Hol*_*ust 70

几个核心ruby类,包括ArrayHash包含Enumerable提供许多有用方法来处理这些枚举的模块.

此模块提供finddetect方法,你想达到什么里面做:

arr = [12, 88, 107, 500]
arr.find { |num| num > 100 } # => 107
Run Code Online (Sandbox Code Playgroud)

两个方法名称都是彼此的同义词,并且完全相同.

  • 在Ruby世界中也称为`detect` (4认同)
  • 更新 - 我现在总是使用 `detect` 别名。我很容易记住“选择拒绝检测”,并且不会与 ActiveRecord 的“查找”混淆。 (3认同)

Mic*_*ohl 5

arr[arr.index {|num| num > 100 }] #=> 107
Run Code Online (Sandbox Code Playgroud)