`

ruby学习笔记--Array

    博客分类:
  • ruby
阅读更多

 由于工作需要,最近在学习Ruby,现在主要在看两本书《Ruby on Rail程序设计技术详解》和《Ruby of book》。毕竟是要在工作中运用,而且时间还有限,所以我在看书和做例子的同时也简单记录下了一些基本知识点,方便用的时候查找。有兴趣的朋友欢迎一起交流学习:

l         数组

1.  创建数组

  和其它很多编程语言一样,很容易创建一个数组,但要注意的是Ruby是一种弱类型的脚本语言,数组中各元素的类型可以互不相同,而且数组的长度可变:

arr = [“one”,”two”,”three”]

OR

arr = Array.new                    #an empty array

arr = Array.new(5)               #[nil, nil, nil, nil, nil]

arr = Array.new(5,”hello”)    #[”hello”, ”hello”, ”hello”, ”hello”, ”hello”]

       当创建一个数组时,如果其元素为string类型且使用单引号,而你又不想老输入单引号,那么我们可以使用下面的方法来创建(使用%W来创建用双引号括起来的字符串)

arr = %w( this is an array of strings)    #使用空格作为元素的分隔符

 

2.通过索引存取数组的值:

Ruby中,数组索引可以是正整数(从前到后,从0开始)也可以是负整数(从后到前,从-1开始)还可以是范围(Range:

arr = ['h','e','l','l','o',' ','w','o','r','l','d']

print arr[0,5]

puts

print arr[0..4]

puts

print arr[0...4]

puts

print arr[-5,5]

--------Results--------

hello

hello

hell

world

 

Note: arr[-5,5]:前一个整数-5表示开始的索引,后面一个整数5表示数量

 

3..复制数组:

当使用=将一个数组变量赋值给另一个数组变量时,这两个数组变量引用的仍然是同一个数组,修改其中一个数组的值,另一个也会修改。我们可以使用Clone方法复制一个新数组:

arr = [one,two,three,]

arr1= arr               #arrarr1引用的还是同一个数组,修改一个另一个也会修改

arr2=arr.clone        #arr2arr的一个新版本,修改arr2不影响arr

 

4..比较数组大小:

       当使用 <=> 来比较两个数组a1a2时,有三种情况:

1.       a1 小于 a2 返回 -1

2.       a1 等于 a2 返回 0

3.       a1 大于 a2 返回 1

那么,数组是如何比大小的呢?

当两个数组进行比较时,会把两个数组相同索引(0开始)上的值拿来比较,如 [0,10,20]<=> [0,20,20], 则会返回-1,因为当索引为1时,10<20

 

另外,如果比较的两个数组的元素是字符串,那么就比较它们的ASCII;如果一个数组比另一个长且其它元素都相同,那么数组长的‘大’。

然而,如果一个短数组里面的一个元素比另一个长数组里面的同位置的元素大,则认为短数组‘大’。

arr1=[1,2,3,4,5]

arr2=[1,2,3,4,5]

arr3=[1,2,3,4]

arr4=[1,2,3,5]

arr5=[1000,2000,3000]

arr6=[1,2]

arr7=[2,1]

arr8=["hello", "world"]

arr9=["Hello", "World"]

 

p(arr1<=>arr2)      #     0

p(arr3<=>arr1)      #     -1

p(arr4<=>arr3)      #     1

p(arr5<=>arr4)      #     1

p(arr7<=>arr6)      #     1

p(arr8<=>arr7)      #     nil

p(arr9<=>arr8)     #     -1

 

5.数组排序:

Sort方法使用比较操作符 <=> 来比较一个数组中邻近的元素的大小,但是这个不能比较一个数组中包含有nil的值的情况;

arr.sort{|a,b| a.to_s <=> b.to_s}

说明: 在这arr是一个数组对象,ab代表相邻的两个元素。本方法使用了to_s方法把nil转换为一个空字符串,这样就可以对含有nil的数组进行排序了。此外,这个数组本身的值不会发生任何变在。

 

6.添加和删除数组元素:

       向数组添加元素:

unshift:向数组头部添加数组元素

push:   向数组头部尾数组元素

<< : 向数组尾部添加一个数组元素

向数组删除元素:

shift: 从头部删除数组元素,并返回被删除的元素

pop: 从尾删除数组元素,并返回被删除的元素


作者:Even.He 
出处:http://www.cnblogs.com/puresoul/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 
分类: Ruby
标签: rubyarray

 

 
分享到:
评论

相关推荐

    Ruby学习笔记(学习心得)

    Ruby学习笔记 01 类的属性与方法 02 访问控制 03 Container(Array/Hash) 04 Iterator 05 简单数据类型 06 范围 07 方法 08 条件控制 09 异常处理

    学习 Ruby 的笔记以及 Demo(简介、语言特性、应用场景、Ruby 注释、Ruby 文件的构造与析构语句Ruby 变量等)

    Ruby 学习笔记 1、简介 定义:一种简单快捷的面向对象脚本语言 开发者:松本行弘 开发时间:1995年 设计目的:A PROGRAMMER'S BEST FRIEND【程序员的最佳朋友】 文件扩展名:rb 2、语言特性 真正的面向对象编程语言 ...

    ruby语言入门教程-自学笔记

    在开始学习Ruby之前,需要确保已经在计算机上安装了Ruby环境。以下是不同操作系统上的安装步骤: - **Windows系统**: 1. 访问Ruby官方网站(https://www.ruby-lang.org/en/downloads/)下载Ruby安装包。 2. 运行...

    Ruby数组(Array)学习笔记

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

    学习Ruby_11961032.pdf

    ruby自学笔记,里面包含了笔者学习心得 元素的过滤 使用场景:数组中元素都是有各自的索引位置,有时候我们想人为的控制某个元素的索引编号,或者不想使用某个索引编号,可以在数组中加入nill来占位 数组的....

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

    Ruby是一种面向对象的、动态类型的...通过这些示例,我们可以深入理解Ruby语言的特性和常用操作,为今后的学习和开发打下坚实的基础。无论是初学者还是经验丰富的开发者,Ruby都能提供一个富有创新和乐趣的编程环境。

    ajit-notebook:阿吉特的笔记本

    【标题】"ajit-notebook:阿吉特的笔记本"所指的可能是一个个人项目或者学习资源库,其中包含了阿吉特(Ajit)在IT领域,尤其是Ruby编程语言方面的笔记、代码示例或者学习资料。这个“笔记本”可能是为了分享知识、...

    prototype 开发应用手册,笔记,prototype.js文件下载

    Prototype还为Array和String等内置类型提供了许多实用的扩展方法,如`Array.prototype.each()`, `String.prototype.startsWith()`等,增强了这些类型的可操作性。 七、实际应用 Prototype常被用于构建复杂的Web...

    rps-challenge-apprenticeships:学徒课程的网络模块挑战结束

    RPS挑战指示挑战时间:直到一天结束随时使用Google,您的笔记,书籍等,但请自行进行操作当您开始挑战时,请提出拉取请求,并在全天进行提交时继续推送更新请提交图表,说明您在战斗挑战或本挑战中浏览器如何与...

Global site tag (gtag.js) - Google Analytics