一.遍历,搜索
enum.all?{|obj| block}
判断所有元素都满足模中条件,元素都通过条件block返回true,否则返回false
[1,2,3,4,5].all?{|i| i >= 1} #返回true
[1,2,3,4,5].all?{|i| i > 1} #返回false
enum.any?{|obj| block}
判断集合中是否有至少一个元素满足条件,满足返回true,否则返回false
[1,2,3,4,5].any?{|i| i > 1} #返回true
[1,2,3,4,5].any?{|i| i > 5} #返回false
enum.collect{|obj| block}
集合中的每个元素传递调用block,并保存block运行返回的结果
[1,2,3,4,5].collect{|i| i + 1} #返回[2,3,4,5,6]
enum.find(ifnone = nil){|obj| block}
寻找集合中符合某条件的一个元素,运行时依次传递每个元素给block,直接返回第一个使得block返回值为true的元素。如果没有找到任何符合条件的元素,则返回参数ifnone
[1,2,3,4,5].find{|i| i>2} #返回3
enum.find_all{|obj| block}
寻找集合中所有符合某条件的元素。和enum.select方法功能相同。
[1,2,3,4,5].find_all{|i| i>2} #返回[3,4,5]
enum.include?(obj)
判断集合中是否包含obj
[1,2,3,4].include?(1) #返回true
[1,2,3,4].include?(5) #返回false
求和:
[1,2,3,4,5].inject{|sum,i| sum + n} #返回1+2+3+4+5的结果为15
求积:
[1,2,3,4,5].inject{|product,i| product * n} #返回120
将集合按条件分割:
[1,2,3,4,5].partition{|i| i%2 == 0} #返回[[2,4],[1,3,5]]
二.比较,排序
enum.max和enum.min
返回集合中最大的元素和最小元素
[1,2,3,4,5].max #返回5
[1,2,3,4,5].min #返回1
enum.sort
返回按照元素大小排序后的集合
[1,3,2,4].sort #返回[1,2,3,4]
三.区间
".."表示连接起点和终点,包括终点
"..."表示连接起点和终点,不包括终点
1..10 #表示1,2,3,4,5,6,7,8,9,10
1...10 #表示1,2,3,4,5,6,7,8,9
'a'..'z' #表示a,b,c,d,e......x,y,z
区间转换为数组
(1..4).to_a => [1,2,3,4]
区间具有所有Enumerable模块提供的方法
(1..5).max #返回5