1、创建数组 a=Array.new(6,obj=nil) #=> [nil, nil, nil, nil, nil, nil] 设置默认值 a=Array.new(6) #=> [nil, nil, nil, nil, nil, nil] 默认值为nil a=Array.new(6,obj=1){|obj| obj+1} #=> [1, 2, 3, 4, 5, 6] 默认值进行块里面的迭代 a=%w{1 2 3 4 5 6} #=> [1, 2, 3, 4, 5, 6] a=[1, 2, 3, 4, 5, 6] #=> [1, 2, 3, 4, 5, 6] 2、数组操作 require 'iconv'
methods=[ ["a","数组"], ['a.length',"长度"], ['a[-1]','倒数第一个'], ['a[10]','超出数组的长度下标都表示nil'], ['a[2,3]','表示下标从2开始的连续3个数组段'], ['a[1..3]','表示下标从1到下标3的数组段'], ['a[1..3]','表示下标从1到下标2的数组段,不包含最后一个数'], ['a.delete_at(0)','把第一个元素给删除了'], ['a.insert(0, 1)','把1插入到数组开始处'], ['a.slice!(1, 2)','(slice)表示获取下标1开始的2个元素不删除,(slice!)获取完后删除元素'], ['a<<7','添加到数组末尾 同 a.push(7)'], ['a.pop(2)','删除末尾2个元素 同 a.slice!(-1,2)'], ['a.shift(2)','删除前面两个元素 同 a.slice!(0,2)'], ['a.unshift(1,2)','前面插入两个元素 同 a.insert(0, 1,2)'], ['a=[0]+a','[(+ <<,并集包含重复)(|,并集不包含重复)] [&,交集] [-,差集]'], ] methods.each { |method| puts "#{method[0]} => #{eval(method[0])} # #{Iconv.conv("GB18030","UTF-8",method[1]) }" } 为了达到输出这种格式 “a => 123456 # 数组”而又不用每个去格式化,所有可以利用ruby的 eval动态执行代码,由于有中文所以用到了 Iconv.conv 方法转码。 输出如下 a => 123456 # 数组 a.length => 6 # 长度 a[-1] => 6 # 倒数第一个 a[10] => # 超出数组的长度下标都表示nil a[2,3] => 345 # 表示下标从2开始的连续3个数组段 a[1..3] => 234 # 表示下标从1到下标3的数组段 a[1..3] => 234 # 表示下标从1到下标2的数组段,不包含最后一个数 a.delete_at(0) => 1 # 把第一个元素给删除了 a.insert(0, 1) => 123456 # 把1插入到数组开始处 a.slice!(1, 2) => 23 # (slice)表示获取下标1开始的2个元素不删除,(slice!)获取完后删除元素 a<<7 => 14567 # 添加到数组末尾 同 a.push(7) a.pop(2) => 67 # 删除末尾2个元素 同 a.slice!(-1,2) a.shift(2) => 14 # 删除前面两个元素 同 a.slice!(0,2) a.unshift(1,2) => 125 # 前面插入两个元素 同 a.insert(0, 1,2) a=[0]+a => 0125 # [(+ <<,并集包含重复)(|,并集不包含重复)] [&,交集] [-,差集]
|
请发表评论