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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: alianlord
打印 上一主题 下一主题

[已经解决] VA系统文言文式脚本求注解(1)。

[复制链接]

Lv4.逐梦者

梦石
2
星屑
6682
在线时间
501 小时
注册时间
2018-3-23
帖子
533

R考场第七期银奖

11
发表于 2020-4-16 14:11:01 | 只看该作者
本帖最后由 MCCF 于 2020-4-16 14:15 编辑

文章所有代码都未经测试,有爱自取
数组存哈希是可以的,但是{}只是RGSS特有的Hash简写。它一般来说是表示一个Block(块)。如:
  1. Array.new(size) {|index| ... }
复制代码
这是F1文档中的标准语法。可以把Block理解为类似于函数的东西:index为参数,...是执行的内容。不同的是{}语法的Block不能使用return,而会取块中最后一个结果作为返回值。
回到Array本身,这个语法的意思是,创建一个有size个元素的数组,每创建一个元素就调用块(传入当前元素的下标作为参数,从0开始计数)。并用返回值作为这个位置上的值。
如下实例:
  1. Array.new(10) {|index| index + 1 } # => [1,2,3,4,5,6,7,8,9,10]
复制代码
至于Array.new(size) { value }这个语法就更容易产生误解……不过这也是块的思想,value实际上是这个块的返回值,比如:
  1. Array.new(10) { 1 } # => [1,1,1,1,1,1,1,1,1,1]
复制代码
想要[{},{},{},{},{}]这样的东西?看看这个:
  1. Array.new(5){{}}
复制代码
顺便……如果想要防止歧义,可以用do-end块。这种语法是可以用return的,不过也可以不用。
  1. Array.new(10) do |index|
  2.   index * 2
  3. end
复制代码
结果为:[0,2,4,6,8,10,12,14,16,18]
祝好。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
164
在线时间
415 小时
注册时间
2020-1-11
帖子
256
12
 楼主| 发表于 2020-4-16 14:42:17 | 只看该作者
MCCF 发表于 2020-4-16 14:11
文章所有代码都未经测试,有爱自取
数组存哈希是可以的,但是{}只是RGSS特有的Hash简写。它一般来说是表示 ...

这下概念就容易理解多了。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

13
发表于 2020-4-16 20:45:21 | 只看该作者
11楼说的对,楼主先分清楚块与哈希字面量的区别。
块必定是接在方法的后面,因为块的作用实际上是作为方法调用的参数。
而哈希字面量生成的是一个哈希对象。

再说块与哈希字面量的语法完全不一样啊。
块的语法:
无参数 { expression }
带参数 {|args| expression }

哈希字面量:
{}
{ key1 => value1, key2 => value2 }
{ sym1: value1, sym2: value2 }

最后,楼主产生这种疑惑的根本原因是ruby支持运算符重载。
而ruby核心库就实现了一些运算符,这些运算符操作的结果都应当作为特例记忆。
有时间的话自己翻翻核心库手册看看这些方法。(更快的方法是实际运行一遍)
"string" * 3  # String :*
"a" << 98 # String :<<
[0] * 8 # Array :*
[1, 2, 2] - [2] # Array :-
[1] << 2 # Array :<<
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4216
在线时间
619 小时
注册时间
2013-4-30
帖子
124
14
发表于 2020-4-16 21:15:14 | 只看该作者
看到标题还以为有人实现了VA里的wenyan-lang

ruby中的array -> python中的list
ruby中的hash -> python中的dict

也许可以这么理解?

点评

说起来可能也是因为Ruby里所有的对象都是hashable的……其实本质上区别不大吧  发表于 2020-4-17 12:22
原来是这样,感谢 @guoxiaomi 指正  发表于 2020-4-17 07:28
python里dict的key不能是unhashable的值,ruby里就没有这个限制,尽管也不推荐用奇奇怪怪的东西做key就是了……  发表于 2020-4-17 00:06
    
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 11:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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