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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值