设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2777|回复: 15
打印 上一主题 下一主题

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

[复制链接]

Lv2.观梦者

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

开拓者

跳转到指定楼层
1
发表于 2017-9-17 16:56:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2017-9-17 18:02:54 | 只看该作者
  1. Array.new(5){{}}
复制代码

点评

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

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 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
回复 支持 反对

使用道具 举报

Lv2.观梦者

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

开拓者

4
 楼主| 发表于 2017-9-17 18:21:39 | 只看该作者

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

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

5
发表于 2017-9-17 18:41:35 | 只看该作者
飞翔的小鸟3 发表于 2017-9-17 18:21
说详细点,我要的是生成:
a1=[]
a2=[]
  1. Array.new(5){[]}
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

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

开拓者

6
 楼主| 发表于 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
看来并不是我想的那样啊。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

7
发表于 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
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

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

开拓者

8
 楼主| 发表于 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
我好像意识到一个问题,这些数组没有单独的名字,我怎么对他们其中一个进行赋值之类的呢?
我知道了,刚刚试了一下。可以赋值
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

9
发表于 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 甚至看懂了问题!

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

10
发表于 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 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 15:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表