当前位置: 首页 > 编程笔记 >

Ruby数组(Array)学习笔记

司马祖鹤
2023-03-14
本文向大家介绍Ruby数组(Array)学习笔记,包括了Ruby数组(Array)学习笔记的使用技巧和注意事项,需要的朋友参考一下

1、数组的定义

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


arr1=[]      #最简单的Array创建方式

arr2=Array.new    #标准的Array创建方式

arr3=%w[This is a example!] #%w方式转换既定字符串为数组

arr4=(1..10).to_a   #其他集合对象转换为数组

2、数组元素的访问

数组对象访问是通过数组下标进行的,下标从0开始至数组长度-1,负数表示从数组末尾开始的索引;用一对数字来索引数组,第一个数字表示开始位置,第二数字表示从开始位

置起的元素数目,除此之外,也有一些特殊的方式可以对数组元素进行访问,如下示例代码:


arr=(1..10).to_a

puts arr[2]   #输出:3

puts arr.first  #输出:1

puts arr.last  #输出:10

puts arr[3..5]  #输出:4 5 6,返回下标3-5的子数组

puts arr[-1]  #输出:10   

puts arr[0,3]  #输出:1 2 3,返回下标从0开始,长度为3的子数组

puts arr[-5,3]  #输出:6 7 8,返回下标从-5开始,长度为3的子数组

3、数组的操作

Ruby的数组是动态开发的,可以在同一个数组中放入不同的对象,增删元素时长度自动改变,如下示例代码:


arr=(1..5).to_a  #数组:1 2 3 4 5

arr[1]=Time.new  #数组:1 2013-03-01 11:19:48 +0800 2 3 4 5

arr.push('Hello') #数组:1 2013-03-01 11:19:48 +0800 2 3 4 5 'Hello'

arr<<'world'  #数组:1 2013-03-01 11:19:48 +0800 2 3 4 5 'Hello' 'world',等价push

arr.insert(2,'Hi') #数组:1 2013-03-01 11:19:48 +0800 'Hi' 2 3 4 5 'Hello' 'world'

arr.delete('Hi') #数组:1 2013-03-01 11:19:48 +0800 2 3 4 5 'Hello' 'world'

arr.delete_at(1) #数组:1 2 3 4 5 'Hello' 'world'

arr.shift   #数组:2 3 4 5 'Hello' 'world',删除了首元素

arr.pop    #数组:2 3 4 5 'Hello',删除了尾元素

arr.clear   #数组:空数组

#支持将数组放入原数组,作为一个元素存在,如:

arr=(1..5).to_a    #数组:1 2 3 4 5

arr.push(['Hello','Hi']) #数组:1 2 3 4 5 ['Hello' 'Hi']

arr<<['Time','Date']  #数组:1 2 3 4 5 ['Hello' 'Hi'] ['Time' 'Date']

arr.delete(['Hello','Hi']) #数组:1 2 3 4 5 ['Time' 'Date']

arr.insert(2,['A','B','C']) #数组:1 2 ['A' 'B' 'C'] 3 4 5 ['Time' 'Date']

#注意:上边代码中的['A','B','C']和['Time','Date']在数组arr中是整体存在的,在arr中所占长度为1,下边这种方式就不 一样,['a','b','c']会成为arr中的3个元素

arr[1..3]=['a','b','c']  #数组:1 a b c 4 5 ['Time' 'Date']

4、数组的运算

Ruby数组支持+、-、*、|、&等运算符的支持运算,“+”运算结果为2个数组的全部元素的综合,“-”运算结果为左边数组在右边数组中不存在的元素,“*”运算符右边为整数类型,得到的是原数组的x倍的数组,“|”为并集操作,得到2个数组所有元素的集合,与“+”不同的是,“|”中没有重复元素,“&”为交集操作,得到存在于2个数组中的元素的集合,同样,不存在重复元素,如下示例代码:


arr1=[1,2,3,'a','b']

arr2=[1,2,'a','c','d']

i=arr1+arr2    #数组:1 2 3 a b 1 2 a c d

j=arr1-arr2    #数组:3 b

k=arr1*2     #数组:1 2 3 a b 1 2 3 a b

m=arr1|arr2    #数组:1 2 3 a b c d

n=arr1&arr2    #数组:1 2 a

5、其他

数组还有其他一些很方便的方法,如倒转、排序、是否包含某元素等,可以参考官方API:http://ruby-doc.org/core-2.0/Array.html

 类似资料:
  • 本文向大家介绍Ruby学习笔记一,包括了Ruby学习笔记一的使用技巧和注意事项,需要的朋友参考一下 笔记: Ruby会默认返回方法中的最后一个值。 如果需要返回多个值,可以用数组来实现。 可以通过强制声明return来返回值。 基础的输出方法是用puts(输出一行),print(直接打印)。 基础的输入方法是gets(读入一行,包含行尾的'\n',可以用chomp方法消除)。 纯粹的现象对象语言,

  • 主要内容:创建数组,实例,实例,实例,实例,数组内建方法,实例,数组 pack 指令,实例Ruby 数组是任何对象的有序整数索引集合。数组中的每个元素都与一个索引相关,并可通过索引进行获取。 数组的索引从 0 开始,这与 C 或 Java 中一样。一个负数的索相对于数组的末尾计数的,也就是说,索引为 -1 表示数组的最后一个元素,-2 表示数组中的倒数第二个元素,依此类推。 Ruby 数组可存储诸如 String、 Integer、 Fixnum、 Hash、 Symbol 等对象,甚

  • 本文向大家介绍Ruby中的Range对象学习笔记,包括了Ruby中的Range对象学习笔记的使用技巧和注意事项,需要的朋友参考一下 Range是范围对象的类,定义的时候可以使用范围操作符“..”或者“...”,“..”生成的范围对象包括起点和终点,“...”生成的范围对象不包括起点和终点,范围是由是一序列有顺序、有规律的元素对象组成,任何有顺序,有规律的一组对象,都可以用Range对象来定义,如数

  • 本文向大家介绍Ruby中的String对象学习笔记,包括了Ruby中的String对象学习笔记的使用技巧和注意事项,需要的朋友参考一下 1、String对象定义 String对象的定义可以使用""和'',对于单纯的字符串,推荐使用''进行定义,效率比""高,""与''的区别在于,''内的字符串定义后就是最终形态,即使如\n换行符,也会原样输出,而""更像是一个表达式,解析器会针对其中的特殊字符进行

  • 本文向大家介绍JavaScript学习笔记之数组去重,包括了JavaScript学习笔记之数组去重的使用技巧和注意事项,需要的朋友参考一下 推荐阅读:JavaScript学习笔记之数组的增、删、改、查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 话说面试常会碰到面试官会问JavaScript实现数组去重的问题,最近刚好在学习有关于JavaScript数组

  • 本文向大家介绍javascript类型系统 Array对象学习笔记,包括了javascript类型系统 Array对象学习笔记的使用技巧和注意事项,需要的朋友参考一下        数组是一组按序排列的值,相对地,对象的属性名称是无序的。从本质上讲,数组使用数字作为查找键,而对象拥有用户自定义的属性名。javascript没有真正的关联数组,但对象可用于实现关联的功能   Array()仅仅是一种