feiyang10086 发表于 2011-12-26 18:53

ruby 数组


ruby 数组






数组类。数组的元素可以是任何 Ruby 对象。详细参看 数组表达式 。

超类Object(物件)

包含的模块Enumerable 可举列模块

方法
self
获取第 nth 个数组元素。索引从 0 开始。若 nth 为负值,则从尾部开始算起(最后一个元素的索引为 -1)。若第 nth 个元素不存在,则返回 nil。
self
返回从 start 算起,包含 length 个元素的数组。若 start 为负值,则从尾部开始算起(最后一个元素的索引为 -1)。若 length 超出从 start 算起的数组剩余长度,则忽略超出的部分。若 length 为负值则返回 nil。
self=val
将数组的第 nth 个元素之值改为 val。若 nth 超出数组范围,则数组会自动延伸。所延伸的部分初始化为 nil。

返回 val。
self=val
将数组中从 start 开始算起 length 个元素的内容替换成 val 。若 val 非数组,则调用 val.to_ary 或使用 来进行替换。返回 val 。
ary =
ary = ["a", "b", "c"]
p ary               # =>
ary = 99
p ary               # =>
ary = ["插入的文字"]
p ary               # =>
self + other
将 self 和 other 的内容连结起来并返回一个新的数组。若 other 不是数组,则使用 other.to_ary 的返回值。若返回值不是数组,抛出 TypeError(异常:类型错误) 异常。
a =
b =
p a + b               # =>
p a                   # => (不变)
p b                   # => (同样不变) self - other
减集操作。返回一个包含所有 self 元素、但是减去所有 other 元素的新数组。
self & other
交集操作。返回一个包含在 self 和 other 共有元素的数组。移除重复的元素。
self | other
并集操作。返回一个包含在 self 和 other 所有元素的数组。移除重复的元素。
self <=> other
使用 <=>依次比较 self 和 other 的元素,若 self 大于 other,则返回 1、若 self 等于 other,则返回 0、若 self 小于 other,则返回 -1。若是各元素均相等,且其中一个数组已到达尾部时,较短的数组判定为小。
self == other
使用 == 依次比较各个元素,若所有元素都相等则返回 true。
clear
将数组清空,删除所有元素。返回 self。
ary =
ary.clear
p ary               # => []
clone dup
返回一个与调用者有同样内容的数组。clone 完完全全复制一个数组、包括冻结状态、特殊方法等,而 dup 只有复制对象内容而已。clone 和 dup 都不会复制方法或元素本身。
compact!
返回一个除了 nil 元素以外,包含所有 self 元素的数组。compact! 则是执行破坏性更新,若成功修改,就返回 self,否则返回 nil。
ary =
p ary.compact         # =>
p ary               # =>
ary.compact!
p ary               # =>
p ary.compact!      # => nil
concat(other)
将 other 连结到 self(破坏性操作)。返回 self。
array =
a =
array.concat a
p array               # =>
p a                   # => # 没有变化 delete(val) delete(val) { ... }
删除所有等于 val (借由 ==)的元素。若有任何元素与 val 相等,返回 val。

若没有任何元素与 val 相等,返回 nil。若指定了区块,则对区块进行计算并返回计算结果。
array =
p array.delete(2)   # => 2
p array               # =>

# 若参数为 nil 而没有指定区块,则无法从返回值判断到底有没有进行删除
ary =
p ary.delete(nil)   # => nil
p ary               # => []
p ary.delete(nil)   # => nil
delete_at(pos)
删除在 pos 位置的元素,并返回被删除的元素。若 pos 超出数组范围则返回 nil。
array =
array.delete_at 2
p array               # =>
each {|item| .... }
依次使用各个元素来对区块进行计算。返回 self。
# 依次显示 1、2、3
.each do |i|
puts i
end
each_index {|index| .... }
依每个元素的索引,对区块进行计算。与下面的语句相同:
(0 ... ary.size).each {|index| .... }

返回 self。
empty?
若元素数为 0,返回 true。
include?(val)
若数组中任一元素等于 val(使用==),返回 true。
index(val)
返回数组第一个等于 val(使用 ==)的元素的索引。若找不到相等的元素则返回 nil。
insert(nth, ])
在第 nth 个元素前面插入第二个参数以及后面的所有参数。返回 self。定义如下:
class Array
def insert( n, *vals )
    self = vals
    self
end
end
ary = ["foo", "bar", "baz"]
ary.insert 2, 'a', 'b'
p ary                  # => ["foo", "bar", "a", "b", "baz"]

若没有指定 val 的参数,则什么都不做。
length size
返回数组的长度。若数组为空,返回 0。
nitems
返回非 nil 的元素数目。
pop
删除并返回最后一个元素。若数组为空,返回 nil。
array = , 4]
p array.pop            # => 4
p array.pop            # =>
p array                # =>

p array.pop            # => 1
p array.pop            # => nil
p array                # => []
push(obj1[, obj2 ...])
依次将 obj1, obj2 ... 插入数组的尾部。

返回 self。
array =
array.push 4
array.push
array.push 7, 8
p array                # => , 7, 8]
reverse reverse!
reverse 返回一个与原数组元素顺序相反的辛数组。reverse! 则是执行破坏性更新。

reverse 总是返回一个新的数组,而 reverse! 返回 self。
shift
删除并返回第一个元素。剩余的元素会自动向前补足空缺。若数组为空,则返回 nil。
sort sort! sort {|a, b| ... } sort! {|a, b| ... }
将数组内容排序。若是带区块调用,则传递两个参数给区块,用区块计算的结果进行排序。不带区块时,使用 <=> 对元素进行比较。sort! 则是对数组元素进行破坏型更新。

sort 返回一个新的、并进行过排序的数组,而 sort! 必定返回 self。
uniq uniq!
uniq 返回一个移除重复元素的新数组。剩余的元素会自动向前补足空缺。uniq! 近行破坏性删除,成功执行删除时返回 self ,否则返回 nil。
unshift(obj1[, obj2 ...])
将 obj1、obj2 ... 依次插入在数组的头部。

返回 self。

如果有一天21 发表于 2011-12-26 18:57

谢谢楼主

2gua 发表于 2011-12-27 08:25

可以建个索引了,看来。

rubyish 发表于 2011-12-27 08:52

我希望2gua可以建个索引。

Sevk 发表于 2011-12-27 09:33

历史的哭泣 发表于 2011-12-29 15:16

谢谢

cangshi004 发表于 2011-12-30 11:31

我现在研究的就是数组,多谢楼主分享!















--------------------------------------------------------------
http://bbs.fblife.com/viewthread.php?tid=1909946
页: [1]
查看完整版本: ruby 数组