Project1

标题: 给定一个值X,比如X=5时,怎样……已解决 [打印本页]

作者: 飞翔的小鸟3    时间: 2017-9-17 16:56
标题: 给定一个值X,比如X=5时,怎样……已解决
本帖最后由 飞翔的小鸟3 于 2017-9-17 20:38 编辑

原标题:给定一个值X,比如X=5时,怎样生成5个数组或哈希表?
大佬给讲讲
作者: 喵呜喵5    时间: 2017-9-17 18:02
  1. Array.new(5){{}}
复制代码

作者: 喵呜喵5    时间: 2017-9-17 18:10
喵呜喵5 发表于 2017-9-17 18:02
  1. a = Array.new(5){{}}
  2. a[0]['name'] = 123
  3. a[1]['name'] = 456
  4. a[2]['name'] = 789
  5. p a
复制代码

作者: 飞翔的小鸟3    时间: 2017-9-17 18:21
喵呜喵5 发表于 2017-9-17 18:10

说详细点,我要的是生成:
a1=[]
a2=[]
a3=[]
a4=[]
a5=[]
这样子,批量生成数组,根据X的大小,改变生成数组的数量。
作者: 喵呜喵5    时间: 2017-9-17 18:41
飞翔的小鸟3 发表于 2017-9-17 18:21
说详细点,我要的是生成:
a1=[]
a2=[]
  1. Array.new(5){[]}
复制代码

作者: 飞翔的小鸟3    时间: 2017-9-17 19:16
喵呜喵5 发表于 2017-9-17 18:41

好尴尬,你给的答案,直击中心问题,很简略,大概是太看得起我了.....
其实我自学没几天,确实也是看不懂你的代码.....
你给的Array.new(5){[]}我以为像之前的哈希表一样,
  1. a = Array.new(5){{}}
  2. a[0]['name'] = 123
  3. a[1]['name'] = 456
  4. a[2]['name'] = 789
  5. p a
复制代码

通过改变a[],括号里的数字,可以生成新哈希表。
然后,我这样子写了:
  1. c = Array.new(5){[]}
  2. a = 0
  3. b = -1
  4. while a <= 5
  5.   a = a + 1
  6.   b = b + 1
  7.   c[b]=1
  8. end
  9. p c
复制代码

我以为,这个也是一样。
结果p出来,只是一个数组里有一大堆1
看来并不是我想的那样啊。
作者: 喵呜喵5    时间: 2017-9-17 19:31
  1. a = Array.new(5){[]}
  2. a[0][0] = 1
  3. a[1][0] = 2
  4. a[2][0] = 3
  5. p a
复制代码

作者: 飞翔的小鸟3    时间: 2017-9-17 19:40
本帖最后由 飞翔的小鸟3 于 2017-9-17 19:44 编辑
喵呜喵5 发表于 2017-9-17 19:31


为了达到我的要求,我这样子写:
  1. c = Array.new(5){[]}
  2. a = 0
  3. b = 0
  4. while a <= 5
  5.   a = a + 1
  6.   c[b][0]=1
  7.   b = b + 1
  8. end
  9. p c
复制代码

不是和你那个一样吗?怎么会报错呢?
其实我要的是,自动按照x的值生成相应数组,并且数组的名字也是按规律自动生成。
这才是我要的,就像我上面写的那样子,但是报错了。抱歉,是我没说明白。
ps
我好像意识到一个问题,这些数组没有单独的名字,我怎么对他们其中一个进行赋值之类的呢?
我知道了,刚刚试了一下。可以赋值
作者: 喵呜喵5    时间: 2017-9-17 19:59
飞翔的小鸟3 发表于 2017-9-17 19:40
为了达到我的要求,我这样子写:

不是和你那个一样吗?怎么会报错呢?


报错原因是因为你生成了长度为5的数组,你却循环了6次……

  1. c = Array.new(5) do |i|
  2.   [i, i*2, i+1]
  3. end
  4. p c
  5. p c[0] # 获取第一个数组
  6. p c[4] # 获取第五个数组

  7. # 批量操作生成的数组
  8. c.each_with_index do |arr, index|
  9.   arr[0] = 233
  10.   arr[1] = index
  11. end
  12. p c
复制代码

作者: 喵呜喵5    时间: 2017-9-17 23:11
那我换一种写法吧

  1. a = []
  2. 5.times do |i|
  3.   a[i] = []
  4. end
复制代码


学习Ruby的话,我自己最开始是从这本书入门的
Ruby编程语言.pdf

https://pan.baidu.com/s/1jGtU790




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