ruby , each,map,collect,inject,reject,select,shuffle[n..m],flatten



一。把一字符串,根据其中的特殊字符 “.“ 分割成数组并去除空的字符串 ,我们得到一个数组 arr

  1. arr = '.666.555.444.333.22.11.'.split('.').reject(&:blank?)  



= 。each 的使用

数字:

  1. 2.0.0p0 :183 >   a = [1, 2, 3, 4, 5]  
  2.  => [1, 2, 3, 4, 5]   
  3. 2.0.0p0 :184 > a.each {|number| puts number*2}  
  4. 2  
  5. 4  
  6. 6  
  7. 8  
  8. 10  
  9.  => [1, 2, 3, 4, 5]   
  10. 2.0.0p0 :185 >   
  11. 字符:  
  12. 2.0.0p0 :191 > lower_case = ["hi""these""are""some""words"]  
  13.  => ["hi""these""are""some""words"]   
  14. 2.0.0p0 :192 > upper_case = []  
  15.  => []   
  16. 2.0.0p0 :193 > lower_case.each do |word|  
  17. 2.0.0p0 :194 >     upper_case << word.upcase  
  18. 2.0.0p0 :195?>   end  
  19.  => ["hi""these""are""some""words"]   
  20. 2.0.0p0 :196 > puts upper_case  
  21. HI  
  22. THESE  
  23. ARE  
  24. SOME  
  25. WORDS  
  26.  => nil   
  27. 2.0.0p0 :197 >   


三。collect的使用

  1. 2.0.0p0 :197 > lower_case = ["hi""these""are""some""words"]  
  2.  => ["hi""these""are""some""words"]   
  3. 2.0.0p0 :198 > upper_case = lower_case.collect { |word| word.upcase }  
  4.  => ["HI""THESE""ARE""SOME""WORDS"]   
  5. 2.0.0p0 :199 > puts upper_case.inspect  
  6. ["HI""THESE""ARE""SOME""WORDS"]  
  7.  => nil   
  8. 2.0.0p0 :200 >   



四。map的使用

  1. 2.0.0p0 :200 > a = [ "a""b""c""d" ]  
  2.  => ["a""b""c""d"]   
  3. 2.0.0p0 :201 > a.map { |x| x + "!" }   
  4.  => ["a!""b!""c!""d!"]   
  5. 2.0.0p0 :202 > a  
  6.  => ["a""b""c""d"]   
  7. 2.0.0p0 :203 >   



五。reject的使用

  1. 2.0.0p0 :210 > (1..30).reject { |n| n % 2 == 0 }  
  2.  => [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29]   
  3. 2.0.0p0 :217 >   a = [1,2,3,4]  
  4.  => [1, 2, 3, 4]   
  5. 2.0.0p0 :218 > a.reject {|n| n > 2}  
  6.  => [1, 2]   
  7. 2.0.0p0 :219 >   



六.select的使用

  1. 2.0.0p0 :224 >   a = [1,2,3,4]  
  2.  => [1, 2, 3, 4]   
  3. 2.0.0p0 :225 > a.select {|n| n > 2}  
  4.  => [3, 4]   
  5. 2.0.0p0 :226 >  



七.inject的使用

  1. enum.inject(init_value) {|memo,obj|  block}  
  2. enum.inject{ |memo,obj| block }  
  3.   
  4.    2.0.0p0 :226 > [1, 2, 3, 4].inject { |result, element| result + element }  
  5.     => 10  
  6.   
  7. 2.0.0p0 :227 > hash = [[:first_name'Shane'], [:last_name'Harvie']].inject({}) do |result, element|  
  8. 2.0.0p0 :228 >       result[element.first] = element.last  
  9. 2.0.0p0 :229?>     result  
  10. 2.0.0p0 :230?>   end  
  11.  => {:first_name=>"Shane":last_name=>"Harvie"}   
  12. 2.0.0p0 :231 >  


把array转换成hash表。有也第一个例子的基础,这个例子应该很容易看得懂。


[1, 2, 3, 4].inject(0) { |result, element| result + element } # => 10 

   inject带有一个参数和block。block中的两个参数是有含义的。第一个参数reslut在inject第一次执行block时把inject带的参数付值给它,element就是数组中的元素,该例中inject一共执行4次block,每次执行block完后,最后语句的结果再付值给result,如此循环,直到遍历数组中所有元素。我们深入这个例子看每一步执行的结果。
因为数组有4个元素,所以要执行4次block操作:
  第一次操作:result=0,既等于inject带的参数;element=1,既第一个元素;执行block后result + element =1,再把这个结果付值给result,所以在执行完第一次block后,result = 1。
  第二次操作:result=1,既上次运行block后的最后一条语句的结果;element=2,既第二个元素;执行block后付值result=3。
如此类推,直到最后一次执行完block,生产的值为10。就是inject的返回值了。

八。shuffle[n..m]

('a'..'z').to_a.shuffle[0..7].join

一个相关的网站:http://blog.jayfields.com/2008/03/ruby-inject.html


九. flatten

  1. 2.0.0p247 :002 > [1,2,3,4,5,[6,7,8],[9,1,[1,2]]].flatten  
  2.  => [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 1, 2]   
  3. 2.0.0p247 :003 > 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值