Project1

标题: 【ruby初学者】二维数组迭代赋值的问题 [打印本页]

作者: deadseifer    时间: 2017-4-4 20:45
标题: 【ruby初学者】二维数组迭代赋值的问题
这个问题完全是Ruby的问题,我不知道发没发对区,请见谅。

我的目的:从data这个数组中逐个提取每一个元素,然后分别赋值给二维数组的每一个ary[x][3]和ary[x][4]
我举例子解释一下:
就是ary[0][3], ary[0][4], ary[1][3], ary[1][4], ary[2][3], ary[2][4]...等等等。

下面是我写的代码,运行时候报错 “in `block in <top (required)>': undefined method `[]=' for nil:NilClass (NoMethodError)”
希望得到各位高手的指点和解答,而且我觉得我的思路不是很好,还请高手点播,谢谢各位!!!
RUBY 代码复制
  1. data=[12,13,13,13,15,14,15,16,15,19]
  2. ary=Array.new(5){Array.new(6)}
  3.  
  4. c=0
  5. d=3
  6. data.each do |i|
  7.   if d==3
  8.   ary[c][d] = i
  9.   c+=1
  10.   d+=1
  11.   else
  12.     ary[c][d] = i
  13.     c+=1
  14.     d-=1
  15.   end
  16. end
  17.  
  18. puts ary

作者: RaidenInfinity    时间: 2017-4-4 21:19
RUBY 代码复制
  1. data=[12,13,13,13,15,14,15,16,15,19]
  2. ary=Array.new(5){Array.new(6)}
  3.  
  4. data.each_with_index do |v, i|
  5.     a = i / 2
  6.     b = 3 + i % 2
  7.     ary[a][b] = v
  8. end
  9.  
  10. p ary
  11. #输出:[[nil, nil, nil, 12, 13, nil], [nil, nil, nil, 13, 13, nil], [nil, nil, nil, 15, 14, nil], [nil, nil, nil, 15, 16, nil], [nil, nil, nil, 15, 19, nil]]


a和b的算法:
RUBY 代码复制
  1. arr = [0,1,2,3,4,5,6,7,8,9,10]
  2. p arr.map {|i| i / 2} #输出: [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
  3. p arr.map {|i| 3 + i % 2} #输出: [3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4]

作者: deadseifer    时间: 2017-4-4 21:35
RaidenInfinity 发表于 2017-4-4 21:19
data=[12,13,13,13,15,14,15,16,15,19]
ary=Array.new(5){Array.new(6)}

感谢版主大人!!!
我明白你的思路了!!!
然后如果可以的话,请问能不能告诉我我写的代码为什么会报NoMethodError呢?

非常感谢!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1