关闭

ruby学习笔记之数组学习(一)

472人阅读 评论(0) 收藏 举报
分类:
数组:方括号之之间放一组元素,索引从零开始。如果这个位置上没有对象,则返回nil表示空。
使用负整数访问数组,则从数组末端开始计数。
一、数组定义
a = [3.14159,"pai",99]
puts a.class
puts a.length
puts a[0]
输出:
Array
3
3.14159

b=Array.new
puts b.class
puts b.length
b[0]="aab"
b[1]="abb"
puts b.length
输出:
Array
0
2

c=[1,3,5,7,9]
puts c[-1]
puts c[-2]
print "c[-99]:#{c[-99]}\n"
输出:
9
7
c[-99]:

(2)Array.new 生成一个空的新数组
Array.new(size) 生成size个obj对象组成的新数组 [nil,nil,...]
Array.new(5,'A')创建给定大小的数组['A','A','A','A','A']

(3)[]=设置数组中的元素,若有间隙用nil来填充
c=[1,3,5,7,9]
c[6]=66
print "c:#{c}\n" 
输出:c:[1, 3, 5, 7, 9, nil, 66]

(4)选取元素组成新数组
a=%w{a b c d e f}
p a.values_at(1,3,5)
输出:["b","d", "f"]
p a.values_at(1,3,5,7)
输出:["b","d", "f", nil]
p a.values_at(-1,-3,-5,-7)
输出:["f","d", "b", nil]
p a.values_at(1..3,2...5)
输出:["b", "c", "d", "c", "d", "e"]

二、数据读取
1.范围读取:[start,count]返回从start开始的count个对象
c=[1,3,5,7,9]
print "c[1,3]:#{c[1,3]}" 
print "\nc[3,1]:#{c[3,1]}\n" 
puts c[-3,2]
输出:
c[1,3]:[3, 5, 7]
c[3,1]:[7]
5
7

2.区间:使用range来对数组进行索引,2个点包含结束,3个点不包含
print "c[2..4]:#{c[2..4]}" 
print "\nc[2...4]:#{c[2...4]}" 
print"\nc[-3..-1]:#{c[-3..-1]}" 
print"\nc[-1..-3]:#{c[-1..-3]}\n" 
输出:
c[2..4]:[5, 7, 9]
c[2...4]:[5, 7]
c[-3..-1]:[5, 7, 9]
c[-1..-3]:[]

3.读取指定元素
Array.at比Array[]快,因为不接受range参数
a=[11,22,33,44]
p a.at(1)
输出:22
p a.at(-1)
输出:44
p a.fetch(1)
输出:22
p a.fetch(-1)
输出:44
p a.fetch(-1,'car')
输出:44
p a.fetch(4,'car')
p a 
输出:
"car"
[11, 22, 33, 44]
p a.fetch(4) {|i| i*i}
输出:16

4.first和last存取元素
x=[1,2,3,4]
puts x.first
#output: 1
puts x.last
#output: 4
putsx.first(2).join("-")
#output: 1-2
putsx.last(2).join("-")
#output: 3-4


三、赋值
1.如果长度为0,则赋值语句右边的东西将被插入到数组的起点位置之前,且不删任何元素;
如果右边本身是一个数组,则其元素将替换掉原数组对应位置上的东西;
如果索引下标选择的元素个数和赋值语句右边元素个数不一致,那么数组将会走动调整其大小
c=[1,3,5,7,9]
c[2,2]='ccc'
print "c:#{c}\n" 
输出:c:[1, 3, "ccc", 9]
c[2,0]='coc'
print "c:#{c}\n" 
输出:c:[1, 3, "coc", "ccc", 9]
c[1,1]=[9,8,7]
print "c:#{c}\n" 
输出:c:[1, 9, 8, 7, "coc", "ccc", 9]
c[0..3]=[]
print "c:#{c}\n" 
输出:c:["coc", "ccc", 9]
c[5..6]=99,98
print "c:#{c}\n" 
输出:c:["coc", "ccc", 9, nil, nil, 99, 98]

2.数组可以不设初始值,可以使用 <<操作来添加到数组的末尾,后进先出
x=[]
x<<"Jack"
x<<"Tom"
x<<"Crystal" puts x[2]
#输出:Crystal 
puts x[x.length-1]  
#输出:Crystal 
#pop删除最后一个元素,并返回给元素
x.pop 
puts x[x.length-1] 
#输出:Tom
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1701688次
    • 积分:16093
    • 等级:
    • 排名:第670名
    • 原创:66篇
    • 转载:956篇
    • 译文:11篇
    • 评论:28条
    最新评论