数组 即对象的有序集合 x = [1,2,3,4]
数组的索引从0开始,即 x[0] 为第一个元素1.

数组不需要设置预定义空间,或手工分配元素,叫我们可以创建空数组,如下所示:

x = []

x << "word"  我们就把word 字符串压入数组中,<< 是把数据放到数组末尾的运算符,也可以调用push方法。

数组的基本方法:

pop  出列,先进后出

push  进列

jion  将字符连接起来,形成一个大字符串

字符串切分成数组

split方法就是将字符串按照正则表达式将其分成数组,如:

puts “Short sentence. Another.NO more.”.split(/\.\/).inspect

irb(main):003:0> puts "short sentence. Another. no more.".split(/\./).inspect
["short sentence", " Another", " no more"]
=> nil
irb(main):004:0> puts "short sentence. Another. no more.".split(/\./)
short sentence
 Another
 no more
=> nil

正则表达式中.代表“任意字符”,因此在前面加反斜杠\,将其转义,inspect方法可以得到更紧凑的结果,如果

不调用的话,只能打印出切分的结果。

数组的迭代

数组中进行迭代的方法很简单,使用each方法即可。each方法遍历数组的每个元素,并把该元素当作参数,传递给

你提供的代码块。如:

[1,"test",2,3,4].each { |element| puts element.to_s + "X" }

irb(main):005:0> [1,"test",2,3,5].each {|element| puts element.to_s + "X" }
1X
testX
2X
3X
5X
=> [1, "test", 2, 3, 5]

collect 方法在数组中逐个元素地进行迭代,并用代码块中表达式的结果,对该元素进行赋值。在本例中,把元素

的值乘以2
[1,2,3,4].collect { |element| element*2}

irb(main):006:0> [1,2,3,4].collect {|element| element*2}
=> [2, 4, 6, 8]

数组的其他方法

数组加法和串连

如果有两个数组,我们可以快速合并为一个:

irb(main):007:0> x = [1,2,3]
=> [1, 2, 3]
irb(main):008:0> y = ["a","b","c"]
=> ["a", "b", "c"]
irb(main):010:0> z = x + y
=> [1, 2, 3, "a", "b", "c"]

数组的减法和区分

比较两个数组,方法是用一个数组减去另一个。这种方法结果是从主数组中删除两个数组中都有的元素:

如;
irb(main):011:0> x = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
irb(main):012:0> y = [1,2,3]
=> [1, 2, 3]
irb(main):013:0> z = x -y
=> [4, 5]

检查数组是否为空

可以用array.size 或array.length是否大于0的方法来检查,更流行的方法是empty?,如:

irb(main):014:0> x = []
=> []
irb(main):015:0> puts "x is empty" if x.empty?
x is empty

检查数组是否有某个元素

用include?方法,如果给定参数在数组中能找到则返回True,否则返回False:

irb(main):016:0> x = [1,2,3]
=> [1, 2, 3]
irb(main):017:0>
irb(main):018:0* puts x.include?("x")
false
=> nil
irb(main):019:0> puts x.include?("3")
false
=> nil
irb(main):020:0> puts x.include?(3)
true
=> nil

中间那行把3当成字符串,返回值就是false

访问数组中的第一个和最后一个元素

使用first和last 方法:

irb(main):021:0> x = [1,2,3]
=> [1, 2, 3]
irb(main):022:0> puts x.first
1
=> nil
irb(main):023:0> puts x.last
3
=> nil

如果对first或last方法指定数字n参数,则得到数组从开始或最末起的n个元素

irb(main):024:0> x = [1,2,3]
=> [1, 2, 3]
irb(main):026:0> puts x.first(2).join("-")
1-2
=> nil

反转数组元素的顺序

与字符串一样,数组也可以被反转,如下:

irb(main):027:0> x = [1,2,3]
=> [1, 2, 3]
irb(main):028:0> puts x.reverse.inspect
[3, 2, 1]
=> nil

09-04 12:02