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