我的Ruby学习历程之初识数组

来源:互联网 发布:淘宝买dota2饰品 编辑:程序博客网 时间:2024/05/02 01:39
一提存储容器,很明显就是存东西的,学Java时,学过数组,以及各种集合、Map;那么在Ruby中的类似的有没有差不多的容器呢?Ruby中也有数组(Array),但是这个数组我觉得更高级,更类似Java中的ArrayList,ArrayList不就是可变数组吗;Ruby中还有一个和Java中的Map相似的一种存储容器,称为Hash(杂凑)。
接下来,了解一下Ruby中数组的用法。
如何声明一个数组:
        name = ["kobe" , "james" , "curry"]
如果要声明一个空的数组就是  name = [ ]
在学习Java声明数组的时候要指定数组的大小,在Ruby中就不需要这些了;而Java中ArrayList的底层就相当于一个动态数组,它所表现出来的就和Ruby中的数组是差不多一个意思的;以为在Ruby中的这个数组也可以存取不同的类型。
要获取数组中的一个元素也是十分简单的,就是根据索引来获取的,当然索引一样也是从0开始的。
比如  print name[1] ,所得到的结果就是 james ;
其他的一样都是这样获取的:
                数组名 [ 索引 ]
如何往数组添加元素呢?
                数组名 [ 索引 ] = 要添加的元素
哎呦,这个时候就要注意了 ,如果相应的所以存在的话,就会把数组中原有的元素替换掉;如果相应所以不存在,数组就会自动扩大,把值赋给相应的位置,其他不够长度的位置自动赋值成nil ,这个值类似于Java中的null ;
用print、puts、p方法输出数组会显示出数组中的元素,如下所示:
name = ["kobe" , "james" , "curry"]
name[0] = "paul"
p name  ==> ["paul", "james" , "curry"]
name[4] = "yao"
p name   ==>["paul", "james" , "curry", nil ,"yao"]

我觉的这种感觉特别明显,编程语言之间很多地方真的都是相通的,在学习基础知识的时候多做一下联想,去比较它们之间是否有共同之处,这样我觉得对一些基础的学习是很有帮助的。

获取数组的大小,通过 数组名.size ,
比如上边更改之后的name ,p name.size 会得到 4 ;

数组存元素的目的当然是为了使用,如和对数组中所有的元素进行处理呢,学习Java时,ArrayList可以通过iterator()或listIterator()获取迭代器,依次迭代操作;而Ruby中的迭代器更高级更简单,哈哈
        数组名.each{ |变量|
            要执行的操作
        }
变量里存的是每次迭代时,元素的值;好比用一个变量接收iterator.next()吧
比如这个样子
name = ["kobe" , "james" , "curry"]
name.each{ | n |
    print(n , " , ")
}
这时输出的结果是    
    kobe , james , curry
这样进行操作感觉看起来特别舒服呀,哈哈;除了这种形式的方式迭代以外,还有其他的方式,需要以后慢慢的了解学习。





原创粉丝点击