Select 是有意义的.但有人能解释一下吗.对我来说?我不明白这些数据.

>> [1,2,3,4,5,6,7].detect { |x| x.between?(3,4) }
=> 3
>> [1,2,3,4,5,6,7].detect { |x| x.between?(3,6) }
=> 3
>> [1,2,3,4,5,6,7].detect { |x| x.between?(3,7) }
=> 3
>> [1,2,3,4,5,6,7].detect { |x| x.between?(2,7) }
=> 2
>> [1,2,3,4,5,6,7].detect { |x| x.between?(1,7) }
=> 1
>> [1,2,3,4,5,6,7].detect { |x| x.between?(6,7) }
=> 6
>> [1,2,3,4,5,6,7].select { |x| x.between?(6,7) }
=> [6, 7]
>> [1,2,3,4,5,6,7].select { |x| x.between?(1,7) }
=> [1, 2, 3, 4, 5, 6, 7]

推荐答案

Detect返回列表中块返回TRUE的第一项.你的第一个例子:

>> [1,2,3,4,5,6,7].detect { |x| x.between?(3,4) }
=> 3

返回3,因为这是列表中第一个为表达式x.between?(3,4)返回TRUE的项.

detect在条件第一次返回true后停止迭代.select将迭代,直到到达输入列表的末尾,并返回块返回true的所有项.

Ruby相关问答推荐

运行跳过的RSpec测试,如果通过则失败

在 Ruby 中,如何编写一个可以与 &:symbol 一起使用的简单方法?

从 URL 字符串中提取主机的 Ruby 代码

在Ruby中将嵌套哈希键从CamelCase转换为snake_case

Ruby 中有内置的二进制搜索吗?

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

Scala 的扩展性是否优于其他 JVM 语言?

Ruby 中是否有像 C 中一样的主要方法?

是否有等效于 `Array::sample` 的哈希值?

如何在 Ruby 中解冻对象?

需要必要的库和/或头文件时如何安装 ruby​​-debug

如何让 Ruby 1.9 成为 Ubuntu 上的默认 Ruby?

在类方法中使用实例变量 - Ruby

Ruby 中的自然语言处理

如何在 IRB 中重新加载脚本?

Ruby:如何为数组和哈希制作 IRB 打印 struct

如何删除已安装的 ri 和 rdoc?

严格将字符串转换为整数(或 nil)

JavaScript Array:获取项目的范围

如何判断一个类是否已定义?