选择有意义.但有人可以解释.对我有所帮助吗?我不明白这些数据.
>> [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]
Run Code Online (Sandbox Code Playgroud)
rye*_*guy 75
Detect返回列表中块返回TRUE的第一项.你的第一个例子:
>> [1,2,3,4,5,6,7].detect { |x| x.between?(3,4) }
=> 3
Run Code Online (Sandbox Code Playgroud)
返回,3因为这是列表中第一个为表达式返回TRUE的项x.between?(3,4).
detect在条件第一次返回true后停止迭代.select将迭代直到到达输入列表的末尾并返回块返回true的所有项目.
detect只返回满足谓词的第一个值,如果有的话,否则返回nil.select返回满足谓词的所有值.a.detect { p }类似于a.select { p }[0]
irb(main):001:0> [1,2,3].detect { true }
=> 1
irb(main):002:0> [1,2,3].detect { false }
=> nil
irb(main):003:0> [1,2,3].detect { |x| x % 2 == 0 }
=> 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34349 次 |
| 最近记录: |