#enum 的遍历=========
[1,2,3,4].all?{|i| i>=1} # 所有是否都符合条件 返回true
[1,2,3,4].all?{|i| i>=2} #返回false
[1,2,3,4].any?{|i| i>=2} #有任何一个符合条件 返回true
[1,2,3,4].collect {|i| i+=1} #集合中的每个元素都传递调用block,运行以数组的方式返回
#enum.map 是collect 方法的别名
['a','b','c','d'].each_with_index{|obj,i| puts "#{i} - #{obj}"} #便利集合,obj为元素,i为索引
#enum 的搜索========
#enum.find(ifnone=nil){|obj|block} 找到第一个符合的返回,找不到则返回 ifnone 的值
[1,2,3,4].find{|i| i>2} #返回3
[1,2,3,4].find_all{|i| i>2} #返回 [3,4]
#enum.find_all 和enum.select 方法完全相同
[1,2,3,4].include?(3) #返回true
#enum.inject(initial=nil){|memo,obj| block}
#把集合中的每个obj执行block ,block的结果返回给 memo。如果指定了initial 的值,memo为initial的值,并且第一个元素不再进入迭代。
#eg: 求和
[1,2,3,4].inject{|sum,obj| sum+obj}
#enum.partition{|obj|block}
#返回两个数组,第一个是使block为真,第二个是使block为假
#如下:
[1,2,3,4,5].partition{|i| i>2} #返回[[3,4,5],[1,2]]
#enum 比较,排序==============
[1,2,3,4].max #返回4
["a","bb","ccc","dddd"].max{|a,b| a.length <=> b.length}#返回 dddd
#enum.min 和max类似
[2,4,3,1].sort #返回 [1,2,3,4]
["a","ccc","bb","ddd"].sort{|obj| obj.length} #返回 ["a","bb","ccc","dddd"]
["ad","ac","a","ccc"].sort{|obj| [obj.length,obj]} #先按照长度,再按照字母来排序