当前位置:K88软件开发文章中心编程全书编程全书03 → 文章内容

Ruby 数组(Array)

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 12:58:20

Ruby 数组(Array)Ruby 数组是任何对象的有序整数索引集合。数组中的每个元素都与一个索引相关,并可通过索引进行获取。数组的索引从 0 开始,这与 C 或 Java 中一样。一个负数的索相对于数组的末尾计数的,也就是说,索引为 -1 表示数组的最后一个元素,-2 表示数组中的倒数第二个元素,依此类推。Ruby 数组可存储诸如 String、 Integer、 Fixnum、 Hash、 Symbol 等对象,甚至可以是其他 Array 对象。Ruby 数组不需要指定大小,当向数组添加元素时,Ruby 数组会自动增长。创建数组有多种方式创建或初始化数组。一种方式是通过 new 类方法:names = Array.new您可以在创建数组的同时设置数组的大小:names = Array.new(20)数组 names 的大小或长度为 20 个元素。您可以使用 size 或 length 方法返回数组的大小:实例





#!/usr/bin/rubynames = Array.new(20)puts names.size





# 返回 20puts names.length





# 返回 20尝试一下 ?以上实例运行输出结果为:2020您可以给数组中的每个元素赋值,如下所示:实例





#!/usr/bin/rubynames = Array.new(4, "mac")puts "





#{names}"尝试一下 ?以上实例运行输出结果为:["mac", "mac", "mac", "mac"]您也可以使用带有 new 的块,每个元素使用块中的计算结果来填充:实例





#!/usr/bin/rubynums = Array.new(10) { |e| e = e * 2 }puts "





#{nums}"尝试一下 ?以上实例运行输出结果为:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]数组还有另一种方法,[],如下所示:nums = Array.[](1, 2, 3, 4,5)数组创建的另一种形式如下所示:nums = Array[1, 2, 3, 4,5]在 Ruby 核心模块中可以有一个只接收单个参数的 Array 方法,该方法使用一个范围作为参数来创建一个数字数组:实例





#!/usr/bin/rubydigits = Array(0..9)puts "





#{digits}"以上实例运行输出结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]数组内建方法我们需要有一个 Array 对象的实例来调用 Array 方法。下面是创建 Array 对象实例的方式:Array.[](...) [or] Array[...] [or] [...]这将返回一个使用给定对象进行填充的新数组。现在,使用创建的对象,我们可以调用任意可用的方法。例如:实例





#!/usr/bin/rubydigits = Array(0..9)num = digits.at(6)puts "





#{num}"以上实例运行输出结果为:6下面是公共的数组方法(假设 array 是一个 Array 对象):序号方法 & 描述1array & other_array返回一个新的数组,包含两个数组中共同的元素,没有重复。 2array * int [or] array * str返回一个新的数组,新数组通过连接 self 的 int 副本创建的。带有 String 参数时,相当于 self.join(str)。3array + other_array返回一个新的数组,新数组通过连接两个数组产生第三个数组创建的。4array - other_array返回一个新的数组,新数组是从初始数组中移除了在 other_array 中出现的项的副本。5str <=> other_str把 str 与 other_str 进行比较,返回 -1(小于)、0(等于)或 1(大于)。比较是区分大小写的。6array | other_array通过把 other_array 加入 array 中,移除重复项,返回一个新的数组。7array << obj把给定的对象附加到数组的末尾。该表达式返回数组本身,所以几个附加可以连在一起。8array <=> other_array如果数组小于、等于或大于 other_array,则返回一个整数(-1、 0 或 +1)。9array == other_array如果两个数组包含相同的元素个数,且每个元素与另一个数组中相对应的元素相等(根据 Object.==),那么这两个数组相等。10array[index] [or] array[start, length] [or]array[range] [or] array.slice(index) [or]array.slice(start, length) [or] array.slice(range)返回索引为 index 的元素,或者返回从 start 开始直至 length 个元素的子数组,或者返回 range 指定的子数组。负值索引从数组末尾开始计数(-1 是最后一个元素)。如果 index(或开始索引)超出范围,则返回 nil。11array[index] = obj [or]array[start, length] = obj or an_array or nil [or]array[range] = obj or an_array or nil设置索引为 index 的元素,或者替换从 start 开始直至 length 个元素的子数组,或者替换 range 指定的子数组。如果索引大于数组的当前容量,那么数组会自动增长。负值索引从数组末尾开始计数。如果 length 为零则插入元素。如果在第二种或第三种形式中使用了 nil,则从 self 删除元素。12array.abbrev(pattern = nil)为 self 中的字符串计算明确的缩写集合。如果传递一个模式或一个字符串,只考虑当字符串匹配模式或者以该字符串开始时的情况。13array.assoc(obj)搜索一个数组,其元素也是数组,使用 obj.== 把 obj 与每个包含的数组的第一个元素进行比较。如果匹配则返回第一个包含的数组,如果未找到匹配则返回 nil。14array.at(index)返回索引为 index 的元素。一个负值索引从 self 的末尾开始计数。如果索引超出范围则返回 nil。15array.clear从数组中移除所有的元素。16array.collect { |item| block } [or]array.map { |item| block }为 self 中的每个元素调用一次 block。创建一个新的数组,包含 block 返回的值。17array.collect! { |item| block } [or]array.map! { |item| block }为 self 中的每个元素调用一次 block,把元素替换为 block 返回的值。18array.compact返回 self 的副本,移除了所有的 nil 元素。19array.compact!从数组中移除所有的 nil 元素。如果没有变化则返回 nil。20array.concat(other_array)追加 other_array 中的元素到 self 中。21array.delete(obj) [or] array.delete(obj) { block }从 self 中删除等于 obj 的项。如果未找到相等项,则返回 nil。如果未找到相等项且给出了可选的代码 block,则返回 block 的结果。22array.delete_at(index)删除指定的 index 处的元素,并返回该元素。如果 index 超出范围,则返回 nil。23array.delete_if { |item| block }当 block 为 true 时,删除 self 的每个元素。24array.each { |item| block }为 self 中的每个元素调用一次 block,传递该元素作为参数。25array.each_index { |index| block }与 Array





#each 相同,但是传递元素的 index,而不是传递元素本身。26array.empty?如果数组本身没有包含元素,则返回 true。27array.eql?(other)如果 array 和 o

[1] [2] [3]  下一页


Ruby 数组(Array)