["1", "2", "5", "8", "3"] 鉴于 [1,2,5,8,3].select{|i| i.to_s} #=> -6ren">
gpt4 book ai didi

ruby - 为什么 "select"不返回真值或者是?

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:00 25 4
gpt4 key购买 nike

[1,2,5,8,3].collect{|i| i.to_s} #=> ["1", "2", "5", "8", "3"]

鉴于

[1,2,5,8,3].select{|i| i.to_s} #=> [1, 2, 5, 8, 3]

根据 ruby​​-doc select => “返回一个新数组,其中包含 ary 的所有元素,给定 block 为其返回真值。”

这里的真值不应该是i.to_s

最佳答案

在 ruby​​ 中,任何顺序不是 nilfalse 的都是 true

所以:

[1,2,5,8,3].select{|i| i.to_s} 等同于 [1,2,5,8,3].select{|i|真正的

两者的计算结果都是:

[1,2,5,8,3].select{|i| i.to_s} #=> [1, 2, 5, 8, 3]
[1,2,5,8,3].select{|i| true } #=> [1, 2, 5, 8, 3]

正如你在问题中所说的

select => "Returns a new array containing all elements of ary for which the given block returns a true value.

因此 select 将返回原始数组,因为该 block 的计算结果始终为真。

然而 收集

Returns a new array with the results of running block once for every element in enum.

所以:

[1,2,5,8,3].collect{|i| i.to_s} #=> ["1", "2", "5", "8", "3"]
[1,2,5,8,3].collect{|i| true } #=> [true, true, true, true, true]

关于ruby - 为什么 "select"不返回真值或者是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com