数组肯定是双数的
a =[1,2,3,4,5,6,7,8]
a.each{|dd,cc|
puts cc.to_s
}
不行阿
[b]问题补充:[/b]
想一次迭代取数组里的两个数?a.each第一次就取出1,2,第二次取出3,4?each每次迭代都是取数组的一个值的.
没有一次取出两个的结果?顺序不能改变,hash会改变顺序的。
还有一个方法是用each_slice
下面示例参数2代表切片大小为2
[code="ruby"]
[1,2,3,4,5,6].each_slice(2) do |slice|
print slice[0] , "," , slice[1] , "\n"
end
[/code]
输出
[code="ruby"]
1,2
3,4
5,6
[/code]
查看该方法说明:
[code="console"]
ri each_slice
[/code]
ruby的数组是这样的吧
[code="ruby"]
a = {3=>6, 4=>10, 5=>15}
for k in a.keys
p k
end
[/code]
如果要提取数值的话
[code="ruby"]
a = {3=>6, 4=>10, 5=>15}
for v in a.values
p v
end
[/code]
你所说的双数不知道是什么意思,不过看你举例的样子好像定义的数组是一盘数组吧
[code="ruby"]
a = ["a", "b", "c"]
for s in a
p s
end
[/code]
难道你是要取所有奇数位的值或者所有偶数位的值???
在FOR循环里直接做一次跳过一次不就可以了?或者跳一次做一次
lz你想一次迭代取数组里的两个数?a.each第一次就取出1,2,第二次取出3,4?each每次迭代都是取数组的一个值的,你要一次取两个就自己写个方法嘛 :D
你不能取两次再做运算啊?
如果可以改数组a,那么把a做成一个数组的数组,即
[code="java"]
a = [[1,2],[3,4],[5,6]]
a.each { |value|
value[0], value[1]
}
[/code]
如果不可以改变a,那么构造一个临时的range对象,试试这个
code="ruby".step(2){|v|
print a[v], a[v+1]
puts
}
[/code]
输出
[code="java"]
12
34
56
[/code]
如果是rails下面,可以用
[1,2,3,4,5,6].split(2) #=> [[1,2],[3,4],[5,6]]
自己写一个split也很容易