Programming Ruby 读书笔记(二)

1.再谈ruby数组。
class Test

  a 
=  [ 1 ,   3 ,   5 ,   7 ,   9 ]
  puts a[
0 ]          # ----->1
  puts a[ - 2 ]         # ----->7
  puts a[ 1 ,   3 ]       # ----->[3, 5, 7]
  puts a[ - 3 ,   2 ]      # ----->[5, 7]
  puts a[ 1 .. 3 ]       # ----->[3, 5, 7]
  puts a[ 1 ... 3 ]      # ----->[3, 5]
  
  a[
2 =   ' cat '        # ----->[1, 3, "cat", 7, 9]
  a[ 3 ,   2 =   ' dog '     # ----->[1, 3, "cat", "dog"]
  a[ 3 ,   1 =   ' bee '     # ----->[1, 3, "cat", "bee"]
  a[ 3 ,   0 =   ' bat '     # ----->[1, 3, "cat", "bat", "bee"]
  a[ 0 ... 2 =  []      # ----->["cat", "bat", "bee"]
  a[ 4 .. 5 =   99 ,   98    # ----->["cat", "bat", "bee", nil, 99, 98]

end

数组的一些常用方法:

class Test
  
  a 
=  [ 0 ,   1 ,   2 ,   3 ,   4 ]
  b 
=  Array . new( 5 ) {  | i |  i  *  i }     # ---------->[0, 1, 4, 9, 16]
  c  =  a  &  b                          # ---------->[0, 1, 4]
  d  =  a  -  b                          # ---------->[2, 3]
  e  =  a  +  b                          # ---------->[0, 1, 4, 2, 3]
  f  =  c[ 0 .. 1 <<  d  <<  c[ 2 ]           # ---------->[0, 1, 2, 3, 4]
  
  a
. collect !  {  | x |  x  +   1  }           # ---------->[1, 2, 3, 4, 5]
  a[ 6 .. 7 =   7 ,   8                      # ---------->[1, 2, 3, 4, 5, nil, 7, 8]
  a . delete ( 7 )                        # a--------->[1, 2, 3, 4, 5, nil, 8]
  a . compact !                          # ---------->[1, 2, 3, 4, 5, 8]
  a . push   9                            # ---------->[1, 2, 3, 4, 5, 8, 9]
  a . pop                               # ---------->[1, 2, 3, 4, 5, 8]
  m  =  a . last ( 3 )                      # ---------->[4, 5, 8]
  m . join ( " - " )                        # ---------->"4-5-8"
  n  =  a . first( 2 )                     # ---------->[1, 2]
  n . unshift ( - 1 ,   0 )                   # ---------->[-1, 0, 1, 2]
  n . shift                             # ---------->[0, 1, 2]

  t 
=   %w { a b c d }
  t
. insert( 2 ,   99 )                    # ---------->[a, b, 99, c, d]
  t . insert( - 2 ,   1 , 2 , 3 )                # ---------->[a, b, 99, c, 1, 2, 3, d]
  t . insert( - 1 ,   " e " )                  # ---------->[a, b, 99, c, 1, 2, 3, d, e]
  
end

 2.BLOCK和迭代器

class Test

  def sayHello
    
    yield
    
    [
1 ,   3 ,   5 ,   7 ,   9 ] . each  {  | i |  puts i . succ }
    
    puts [
1 ,   3 ,   5 ,   7 ] . inject( 0 ) {  | sum ,  element |  sum  +  element }
    
    puts [
1 ,   3 ,   5 ,   7 ] . inject( 1 ) {  | product ,  element |  product  *  element }
    
  end

end

test 
=  Test . new
test
. sayHello { puts  " hello "   *   3  }

输出:

hello
hello
hello
2
4
6
8
10
16
105

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值