查看: 3014|回复: 4

[讨论] 【ruby初学者】二维数组迭代赋值的问题

[复制链接]
梦石
0
星屑
730
在线时间
93 小时
注册时间
2010-10-28
回帖
26
发表于 2017-4-4 20:45:45 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
这个问题完全是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)”
希望得到各位高手的指点和解答,而且我觉得我的思路不是很好,还请高手点播,谢谢各位!!!
[pre lang="ruby" line="1"]data=[12,13,13,13,15,14,15,16,15,19]
ary=Array.new(5){Array.new(6)}

c=0
d=3
data.each do |i|
  if d==3
  ary[c][d] = i
  c+=1
  d+=1
  else
    ary[c][d] = i
    c+=1
    d-=1
  end
end

puts ary[/pre]

评分

参与人数 1星屑 +150 收起 理由
唯道集虚 + 150 赞学术帖(x

查看全部评分

梦石
0
星屑
6891
在线时间
7027 小时
注册时间
2013-11-2
回帖
1263

开拓者剧作品鉴家

发表于 2017-4-4 21:19:55 | 显示全部楼层
[pre lang="ruby"]
data=[12,13,13,13,15,14,15,16,15,19]
ary=Array.new(5){Array.new(6)}

data.each_with_index do |v, i|
    a = i / 2
    b = 3 + i % 2
    ary[a] = v
end

p ary
#输出:[[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]]
[/pre]

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

使用道具 举报

梦石
0
星屑
730
在线时间
93 小时
注册时间
2010-10-28
回帖
26
 楼主| 发表于 2017-4-4 21:35:03 | 显示全部楼层
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呢?

非常感谢!

点评

@RaidenInfinity 我懂了 …………真的是太感谢了!  发表于 2017-4-4 23:04
请参考VA区置顶的脚本错误指南帖。  发表于 2017-4-4 22:17
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部