`

ruby 数组

    博客分类:
  • ruby
阅读更多

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

超类Object(物件)

包含的模块Enumerable 可举列模块

方法

self[nth]

获取第 nth 个数组元素。索引从 0 开始。若 nth 为负值,则从尾部开始算起(最后一个元素的索引为 -1)。若第 nth 个元素不存在,则返回 nil。

self[start, length]

返回从 start 算起,包含 length 个元素的数组。若 start 为负值,则从尾部开始算起(最后一个元素的索引为 -1)。若 length 超出从 start 算起的数组剩余长度,则忽略超出的部分。若 length 为负值则返回 nil。

self[nth]=val

将数组的第 nth 个元素之值改为 val。若 nth 超出数组范围,则数组会自动延伸。所延伸的部分初始化为 nil。

返回 val

self[start, length]=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

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

交集操作。返回一个包含在 selfother 共有元素的数组。移除重复的元素。

self | other

并集操作。返回一个包含在 selfother 所有元素的数组。移除重复的元素。

self <=> other

使用 <=>依次比较 selfother 的元素,若 self 大于 other,则返回 1、若 self 等于 other,则返回 0、若 self 小于 other,则返回 -1。若是各元素均相等,且其中一个数组已到达尾部时,较短的数组判定为小。

self == other

使用 == 依次比较各个元素,若所有元素都相等则返回 true。

clear

将数组清空,删除所有元素。返回 self。

ary = [1, 2]
ary.clear
p ary                 # => []
clone
dup

返回一个与调用者有同样内容的数组。clone 完完全全复制一个数组、包括冻结状态、特殊方法等,而 dup 只有复制对象内容而已。clone 和 dup 都不会复制方法或元素本身。

compact!

返回一个除了 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
concat(other)

other 连结到 self(破坏性操作)。返回 self

array = [1, 2]
a = [3, 4]
array.concat a
p array               # => [1, 2, 3, 4]
p a                   # => [3, 4] # 没有变化
delete(val)
delete(val) { ... }

删除所有等于 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
delete_at(pos)

删除在 pos 位置的元素,并返回被删除的元素。若 pos 超出数组范围则返回 nil。

array = [0, 1, 2, 3, 4]
array.delete_at 2
p array               # => [0, 1, 3, 4]
each {|item| .... }

依次使用各个元素来对区块进行计算。返回 self

# 依次显示 1、2、3
[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, [val[, val2 ...]])

在第 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 的参数,则什么都不做。

length
size

返回数组的长度。若数组为空,返回 0。

nitems

返回非 nil 的元素数目。

pop

删除并返回最后一个元素。若数组为空,返回 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                # => []
push(obj1[, obj2 ...])

依次将 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! 则是执行破坏性更新。

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 ...])

obj1obj2 ... 依次插入在数组的头部。

返回 self

分享到:
评论

相关推荐

    ruby 数组处理大全.doc

    ruby数组处理大全 如函数名称 说明 示例 &数组与,返回两数组的交集 [1,2] & [2,3] =&gt;[2] *复制数组n次 [1,2]*2 =&gt; [1,2,1,2] +返回两数组的并集,但不排除重复元素 [1,2]+[2,3] =&gt;[1,2,2,3] 追加元素,但不...

    10Ruby 数组.docx

    ### Ruby 数组详解 #### 一、Ruby 语言概述 Ruby 是一种动态、面向对象的高级编程语言,以其简洁明了的语法而闻名。它强调程序员的生产力与代码的可读性,被誉为“程序员最好的朋友”。Ruby 具备强大的元编程能力,...

    ruby数组

    在Ruby数组中,元素可以通过索引来访问和操作,索引通常从0开始。 ### 数组创建 Ruby提供多种创建数组的方法。最常见的是通过方括号`[]`来创建,例如: ```ruby arr = [1, 2, 3, "four", true] # 创建包含不同类型...

    Ruby数组(Array)学习笔记

    Ruby中的数组是动态数组,存储的数据不用限定类型,数组的长度是根据存储需要动态扩展,所以,在进行数据定义的时候,只用用最简单的方式new一个Array对象就可以了,可以使用以下几种方式: 代码如下: arr1=[] #最...

    ruby 数组使用教程

    下面我们将深入探讨Ruby数组的各种操作。 1. **创建数组**:Ruby数组的创建非常直观,只需在方括号`[]`内列出元素,并用逗号隔开即可。例如,`ary = [1, 2, "3"]` 创建了一个包含整数和字符串的数组。 2. **数组...

    Ruby中数组的一些相关使用方法

    Ruby数组是有序的,任何对象的??整数索引的集合。每个数组中的元素相关联,并提到的一个索引。 数组下标从0开始,如C或Java。负数索引假设数组末尾—也就是说,-1表示最后一个元素的数组索引,-2是数组中最后一个...

    Ruby创建数组方法总结

    程序经常需要管理变量集合。例如,管理日历的程序必须有一周的天数列表。每天必须存储在一个变量中,它们的列表可以存储在一个数组变量中。通过这个数组变量,您可以访问.../usr/bin/env ruby array = Array.new 3.time

    binary_search:用于Ruby数组的本机和纯Ruby二进制搜索和索引方法

    二进制搜索Ruby的数组 二进制搜索是Ruby的Array类中缺少的一种非常方便的算法。 如果我们知道绝对肯定的是,我们正在与正在工作的数组排序,你可以使用二进制搜索通过数组得多的速度远远超过线性搜索,这与指数进行...

    Ruby中的数组和散列表的使用详解

    Ruby的数组(arrays)和散列表(hashes)是被索引的收集(indexed collections). ...有了数组对象,在方括号之间提供索引便可以访问单个元素,如下例所示,注意Ruby数组的索引从零开始。 a=[1,'cat',3.14] #有三个元

    ruby介绍及相应的ruby demo示意源码,供大家参考学习

    3. `array_operations.rb`:演示了Ruby数组的操作,如遍历、添加元素等。 ```ruby arr = [1, 2, 3] arr.each { |num| puts num } arr puts arr.inspect ``` 4. `hash_usage.rb`:展示了Ruby哈希(Hash)的使用,...

    Ruby-RedisObjects直接将Redis类型映射成Ruby对象

    3. **List**: 对于列表,Redis-Objects提供了`push`,`pop`,`lindex`等操作,使得开发者可以像操作Ruby数组一样处理Redis列表。 4. **Set**: Ruby-Objects提供了集合操作,如`add`,`remove`,`members`等,让...

    Ruby简明教程之数组和Hash介绍

    数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据;这和JAVA不同,在JAVA中,数组是存储同一类型数据的结构。 1. 在Ruby中如何定义数组呢? 使用[ ]来框住元素,而元素之间则使用”,”...

    multiarray:用于多维和统一数组的 Ruby 扩展

    {Hornetseye::MultiArray} 提供具有相同类型元素的多维 Ruby 数组。 该扩展旨在与 Masahiro Tanaka 的 NArray 兼容。 但是它允许定义自定义元素类型和对它们的操作。 这项工作还受到了 Ronald Garcia 的 boost::...

    jruby1.7.8版本呢

    - **Java 类型映射**:JRuby 自动将 Ruby 类型映射为对应的 Java 类型,例如 Ruby 数组映射为 Java 数组。 **5. 结合 JRuby 实现企业级应用** JRuby 的 Java 集成能力使其在构建企业级应用时具有独特优势。例如,...

    国科大高级软工18-19秋季复习题

    Ruby数组是一种有序的集合,可以存储任意类型的对象。 15. Ruby哈希(Hash) Ruby哈希是一种无序的键值对集合,常用于存储关联数组。 16. 文档对象模型(DOM)和jQuery DOM是一个跨平台、语言独立的接口,它将...

    cycr:该库允许从Ruby语言访问Cyc本体

    功能 文本协议用于与Cyc通话Ruby符号转换为Cyc术语Ruby数组转换为SubL数组客户端上的Ruby调用透明地转换为SubL 支持子呼叫(例如with-any-mt ) 连接驱动程序:常规套接字和基于同步的通信服务器停机后自动重新连接...

    matlab有些代码不运行-nifti:用于处理NIfTI影像数据的纯Ruby库

    matlab有些代码不运行RubyNifTI Ruby NIfTI是用于在Ruby中处理NIfTI数据的纯Ruby库。 NIfTI是一种图像格式,主要用于MRI和PET成像数据的存储和分析。 Ruby NIfTI当前支持对NIfTI文件的基本访问,包括...检索Ruby数组中

    Arreglos

    首先,让我们了解Ruby数组的基本定义。在Ruby中,你可以使用方括号`[]`来创建一个数组,将元素用逗号分隔。例如: ```ruby mi_arreglo = [1, "two", 3.14, true] ``` 上述代码创建了一个包含整数、字符串、浮点数...

Global site tag (gtag.js) - Google Analytics