#take_while
和#select
不要两种方法做同样的事情吗?
p [1,2,3,4].take_while { |e| e < 3 } # prints [1,2]
p [1,2,3,4].select { |e| e < 3 } # prints [1,2]
答案 0 :(得分:3)
take_while 返回所有先前元素的数组,直到该块返回nil或false。
select 返回一个数组,其中包含块返回true值的元素。例如,如果您有[1,2,3,4,1] 选择将返回[1,2,1]
|/webapp
|/WEB-INF
|web.xml
|login.jsp
|error.jsp
|index.jsp
take_while 会返回[1,2]
p [1,2,3,4,1].select { |e| e < 3 } # prints [1,2,1]
答案 1 :(得分:2)
存在差异,take_while从块中的评估为假时停止,select将继续并评估所有内容。
[1,2,3,4,1].take_while{ |e| e < 3 } # prints [1,2]
[1,2,3,4,1].select{ |e| e < 3 } # prints [1,2,1]