在Ruby中,获取块返回true的第一个可枚举元素的最快方法是什么?

例如:

arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first  # => 107

我希望这样做,而不必像select一样遍历整个数组,因为我只需要第一个匹配项.

我知道我可以打each分,但我认为有一种本土的方法可以做到这一点;我只是在文件里没找到.

推荐答案

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

本模块提供了find or detect methods个选项,这些选项正是您想要实现的目标:

arr = [12, 88, 107, 500]
arr.find { |num| num > 100 } # => 107

两个方法名称都是同义词,其作用完全相同.

Ruby相关问答推荐

如何在Ruby中匹配大型IP网络对象列表中的IP地址

当一个方法在没有参数的 return 关键字上提前退出时,返回什么值?

重写 Enum#inject 以在 Ruby 中将符号作为参数

生成带有小写字母和数字的唯一随机字符串

在ruby中反转数组的顺序

Integer(value) 和 value.to_i 之间的区别

Ruby 中的 class() 与 type()

Ruby:将unix时间戳转换为日期

Ruby 中数组和哈希的性能

将 2 元素数组的数组转换为哈希,其中重复键附加附加值

class_eval <<-"end_eval", __FILE__, __LINE__ 在 Ruby 中是什么意思?

Ruby 中的排序稳定吗?

如何从最后一个元素开始遍历数组?

. vs ::(点与双冒号)用于调用方法

Ruby中的file.open、open和IO.foreach,有什么区别?

Ruby 模板:如何将变量传递到内联 ERB?

为什么在安装 gem 时出现权限被拒绝错误?

类变量上的 attr_accessor

为什么我们在 Ruby 中有 0.0 和 -0.0?

在 Ruby 中解析制表符分隔文件的最佳方法是什么?