Ruby-Array数组

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 # [(+ <<,并集包含重复)(|,并集不包含重复)] [&,交集] [-,差集]

原文地址:https://www.cnblogs.com/yangleiWPF/p/4451469.html