查看: 3331|回复: 15

[已经解决] 给定一个值X,比如X=5时,怎样……已解决

[复制链接]
梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
回帖
177

开拓者

发表于 2017-9-17 16:56:03 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 飞翔的小鸟3 于 2017-9-17 20:38 编辑

原标题:给定一个值X,比如X=5时,怎样生成5个数组或哈希表?
大佬给讲讲

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-9-17 18:02:54 | 显示全部楼层
  1. Array.new(5){{}}
复制代码

点评

这么简单!那他们都叫什么名字呢?不然没法用。  发表于 2017-9-17 18:08
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-9-17 18:10:46 | 显示全部楼层
  1. a = Array.new(5){{}}
  2. a[0]['name'] = 123
  3. a[1]['name'] = 456
  4. a[2]['name'] = 789
  5. p a
复制代码

点评

我p了一下,发现这是生成一个数组中的5个哈希表,可是并没有生成5个数组,刚刚我又思考了一下,其实我要的是生成X个数组。  发表于 2017-9-17 18:16
回复

使用道具 举报

梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
回帖
177

开拓者

 楼主| 发表于 2017-9-17 18:21:39 | 显示全部楼层

说详细点,我要的是生成:
a1=[]
a2=[]
a3=[]
a4=[]
a5=[]
这样子,批量生成数组,根据X的大小,改变生成数组的数量。
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-9-17 18:41:35 | 显示全部楼层
飞翔的小鸟3 发表于 2017-9-17 18:21
说详细点,我要的是生成:
a1=[]
a2=[]
  1. Array.new(5){[]}
复制代码
回复

使用道具 举报

梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
回帖
177

开拓者

 楼主| 发表于 2017-9-17 19:16:30 | 显示全部楼层

好尴尬,你给的答案,直击中心问题,很简略,大概是太看得起我了.....
其实我自学没几天,确实也是看不懂你的代码.....
你给的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
看来并不是我想的那样啊。
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-9-17 19:31:25 | 显示全部楼层
  1. a = Array.new(5){[]}
  2. a[0][0] = 1
  3. a[1][0] = 2
  4. a[2][0] = 3
  5. p a
复制代码
回复

使用道具 举报

梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
回帖
177

开拓者

 楼主| 发表于 2017-9-17 19:40:58 | 显示全部楼层
本帖最后由 飞翔的小鸟3 于 2017-9-17 19:44 编辑


为了达到我的要求,我这样子写:
  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
我好像意识到一个问题,这些数组没有单独的名字,我怎么对他们其中一个进行赋值之类的呢?
我知道了,刚刚试了一下。可以赋值
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-9-17 19:59:36 | 显示全部楼层
飞翔的小鸟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
复制代码

点评

好了,喵呜喵,谢谢你了,我这些问题你不想回答就算了,版主,就是他了  发表于 2017-9-17 20:37
你这些要从那里学啊?论坛要关闭,也不知道以后去哪里问了,不知道大家会去贴吧吗?  发表于 2017-9-17 20:28
从你发来,我研究很久,真的看不懂,从迭代器那里就看不懂了(没有each也算迭代器?)。然后也没有找到方法,庆幸的是我的脚本不报错了。  发表于 2017-9-17 20:27

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 甚至看懂了问题!

查看全部评分

回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-9-17 23:11:57 | 显示全部楼层
那我换一种写法吧

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


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

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

点评

这个我看懂了2333  发表于 2017-9-17 23:37

评分

参与人数 2星屑 +96 收起 理由
sq333333 + 30 活捉大神
鑫晴 + 66 塞糖

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部