赞 | 60 |
VIP | 0 |
好人卡 | 0 |
积分 | 87 |
经验 | 0 |
最后登录 | 2024-2-2 |
在线时间 | 501 小时 |
Lv4.逐梦者
- 梦石
- 2
- 星屑
- 6682
- 在线时间
- 501 小时
- 注册时间
- 2018-3-23
- 帖子
- 533
|
本帖最后由 MCCF 于 2020-4-16 14:15 编辑
文章所有代码都未经测试,有爱自取
数组存哈希是可以的,但是{}只是RGSS特有的Hash简写。它一般来说是表示一个Block(块)。如:
- Array.new(size) {|index| ... }
复制代码 这是F1文档中的标准语法。可以把Block理解为类似于函数的东西:index为参数,...是执行的内容。不同的是{}语法的Block不能使用return,而会取块中最后一个结果作为返回值。
回到Array本身,这个语法的意思是,创建一个有size个元素的数组,每创建一个元素就调用块(传入当前元素的下标作为参数,从0开始计数)。并用返回值作为这个位置上的值。
如下实例:
- Array.new(10) {|index| index + 1 } # => [1,2,3,4,5,6,7,8,9,10]
复制代码 至于Array.new(size) { value }这个语法就更容易产生误解……不过这也是块的思想,value实际上是这个块的返回值,比如:
- Array.new(10) { 1 } # => [1,1,1,1,1,1,1,1,1,1]
复制代码想要[{},{},{},{},{}]这样的东西?看看这个:
顺便……如果想要防止歧义,可以用do-end块。这种语法是可以用return的,不过也可以不用。
- Array.new(10) do |index|
- index * 2
- end
复制代码 结果为:[0,2,4,6,8,10,12,14,16,18] |
|