数组类。数组的元素可以是任何 Ruby 对象。详细参看
数组表达式
。
超类
Object(物件)
包含的模块
Enumerable 可举列模块
方法
-
self[nth]
-
获取第
nth
个数组元素。索引从 0 开始。若
nth
为负值,则从尾部开始算起(最后一个元素的索引为 -1)。若第
nth
个元素不存在,则返回 nil。 -
返回从
start
算起,包含
length
个元素的数组。若
start
为负值,则从尾部开始算起(最后一个元素的索引为 -1)。若
length
超出从
start
算起的数组剩余长度,则忽略超出的部分。若
length
为负值则返回 nil。 -
将数组的第
nth
个元素之值改为
val
。若
nth
超出数组范围,则数组会自动延伸。所延伸的部分初始化为 nil。返回
val
。 -
将数组中从
start
开始算起
length
个元素的内容替换成
val
。若
val
非数组,则调用 val.to_ary 或使用 [val] 来进行替换。返回
val
。 -
ary = [0, 1, 2, 3] ary[1, 2] = ["a", "b", "c"] p ary # => [0, "a", "b", "c", 3] ary[2, 1] = 99 p ary # => [0, "a", 99, "c", 3] ary[1, 0] = ["插入的文字"] p ary # => [0, "插入的文字", "a", 99, "c", 3]
-
将
self
和
other
的内容连结起来并返回一个新的数组。若
other
不是数组,则使用 other.to_ary 的返回值。若返回值不是数组,抛出
TypeError(异常:类型错误)
异常。a = [1, 2] b = [8, 9] p a + b # => [1, 2, 8, 9] p a # => [1, 2] (不变) p b # => [8, 9] (同样不变)
-
减集操作。返回一个包含所有
self
元素、但是减去所有
other
元素的新数组。 -
交集操作。返回一个包含在
self
和
other
共有元素的数组。移除重复的元素。 -
并集操作。返回一个包含在
self
和
other
所有元素的数组。移除重复的元素。 -
使用 <=>依次比较
self
和
other
的元素,若
self
大于
other
,则返回 1、若
self
等于
other
,则返回 0、若
self
小于
other
,则返回 -1。若是各元素均相等,且其中一个数组已到达尾部时,较短的数组判定为小。 -
使用 == 依次比较各个元素,若所有元素都相等则返回 true。
-
将数组清空,删除所有元素。返回 self。
ary = [1, 2] ary.clear p ary # => []
-
返回一个与调用者有同样内容的数组。clone 完完全全复制一个数组、包括冻结状态、特殊方法等,而 dup 只有复制对象内容而已。clone 和 dup 都不会复制方法或元素本身。
-
返回一个除了 nil 元素以外,包含所有 self 元素的数组。compact! 则是执行破坏性更新,若成功修改,就返回
self
,否则返回 nil。 -
ary = [1, nil, 2, nil, 3, nil] p ary.compact # => [1, 2, 3] p ary # => [1, nil, 2, nil, 3, nil] ary.compact! p ary # => [1, 2, 3] p ary.compact! # => nil
-
将
other
连结到
self
(破坏性操作)。返回
self
。array = [1, 2] a = [3, 4] array.concat a p array # => [1, 2, 3, 4] p a # => [3, 4] # 没有变化
-
删除所有等于
val
(借由 ==)的元素。若有任何元素与
val
相等,返回
val
。若没有任何元素与
val
相等,返回 nil。若指定了区块,则对区块进行计算并返回计算结果。array = [1, 2, 3, 2, 1] p array.delete(2) # => 2 p array # => [1, 3, 1] # 若参数为 nil 而没有指定区块,则无法从返回值判断到底有没有进行删除 ary = [nil,nil,nil] p ary.delete(nil) # => nil p ary # => [] p ary.delete(nil) # => nil
-
删除在
pos
位置的元素,并返回被删除的元素。若
pos
超出数组范围则返回 nil。array = [0, 1, 2, 3, 4] array.delete_at 2 p array # => [0, 1, 3, 4]
-
依次使用各个元素来对区块进行计算。返回
self
。# 依次显示 1、2、3 [1, 2, 3].each do |i| puts i end
-
依每个元素的索引,对区块进行计算。与下面的语句相同:
(0 ... ary.size).each {|index| .... }
返回
self
。 -
若元素数为 0,返回 true。
-
若数组中任一元素等于
val
(使用==),返回 true。 -
返回数组第一个等于
val
(使用 ==)的元素的索引。若找不到相等的元素则返回 nil。 -
在第 nth 个元素前面插入第二个参数以及后面的所有参数。返回
self
。定义如下: -
class Array def insert( n, *vals ) self[n, 0] = vals self end end
ary = ["foo", "bar", "baz"] ary.insert 2, 'a', 'b' p ary # => ["foo", "bar", "a", "b", "baz"]
若没有指定
val
的参数,则什么都不做。 -
返回数组的长度。若数组为空,返回 0。
-
返回非 nil 的元素数目。
-
删除并返回最后一个元素。若数组为空,返回 nil。
array = [1, [2, 3], 4] p array.pop # => 4 p array.pop # => [2, 3] p array # => [1] p array.pop # => 1 p array.pop # => nil p array # => []
-
依次将
obj1
,
obj2
… 插入数组的尾部。返回
self
。array = [1, 2, 3] array.push 4 array.push [5, 6] array.push 7, 8 p array # => [1, 2, 3, 4, [5, 6], 7, 8]
-
reverse 返回一个与原数组元素顺序相反的辛数组。reverse! 则是执行破坏性更新。
reverse 总是返回一个新的数组,而 reverse! 返回
self
。 -
删除并返回第一个元素。剩余的元素会自动向前补足空缺。若数组为空,则返回 nil。
-
将数组内容排序。若是带区块调用,则传递两个参数给区块,用区块计算的结果进行排序。不带区块时,使用 <=> 对元素进行比较。sort! 则是对数组元素进行破坏型更新。
-
sort 返回一个新的、并进行过排序的数组,而 sort! 必定返回
self
。 -
uniq 返回一个移除重复元素的新数组。剩余的元素会自动向前补足空缺。uniq! 近行破坏性删除,成功执行删除时返回 self ,否则返回 nil。
-
将
obj1
、
obj2
… 依次插入在数组的头部。返回
self
。
self[start,
length
]
self[nth]=val
self[start,
length
]=
val
self
+
other
self
–
other
self
&
other
self
|
other
self
<=>
other
self
==
other
clear
clone
dup
compact!
concat(
other
)
delete(
val
)
delete(
val
) { … }
delete_at(
pos
)
each {|
item
| …. }
each_index {|
index
| …. }
empty?
include?(
val
)
index(
val
)
insert(
nth
, [
val
[,
val2
…]])
length
size
nitems
pop
push(
obj1
[,
obj2
…])
reverse
reverse!
shift
sort
sort!
sort {|
a
,
b
| … }
sort! {|
a
,
b
| … }
uniq
uniq!
unshift(
obj1
[,
obj2
…])