Project1
标题:
[Main组的问题]关于 $! messgae sub filename 的问题
[打印本页]
作者:
九靈
时间:
2013-8-22 03:02
标题:
[Main组的问题]关于 $! messgae sub filename 的问题
本帖最后由 九靈 于 2013-8-22 20:51 编辑
在Main组里
我知道 Errno::ENOENT 是用来捕捉找不到文件时的异常的
然后系统在找不到文件时会捕捉到Errno::ENOENT异常并执行
filename = $!.message.sub("No such file or dirctory - ","")
print("找不到文件 #{filename}。")
这段代码
---------------------------------------------------
接着有几个问题
(允许我一题多问吧)
(话说这能拆开来问吗...)
1. 为什么 知道所缺的文件的名字?
2. 为什么 filename 的值不是 "No such file or dirctory - "
3. RMXP 附带帮助里说的 "$! 最近发生的异常的信息。由 raise 设定。" 在这里是指 Errno::ENOENT 吗? 又 $! == Errno::ENOENT ?
4. RMXP 附带帮助里说 "message 返回描述错误信息的字符串。" 那在这里 "错误信息的字符串" 是指什么?
5. 话说RMXP 附带帮助里
"sub(pattern) {|matched| ... }
sub!(pattern) {|matched| ... }
用 pattern 来替换首次匹配 pattern 的部分。
sub 生成并返回替换后的字符串。而 sub! 会修改 self 本身并返回结果。若没有进行替换时返回 nil。
除去只进行一次匹配这个特点以外,它与 gsub 是相同的。"
有看没懂= ='
估计 pattern 是指 "No such file or dirctory - ",""
这样的话 "sub 生成并返回替换后的字符串。"
filename 的值就会是 "No such file or dirctory - ","" 了?
不过事实似乎是会 print 出 "找不到文件 + 缺失的文件名"
2013-08-22_025442.png
(11.08 KB, 下载次数: 5)
下载附件
保存到相册
把RTP切为无时
2013-8-22 03:00 上传
6. "No such file or dirctory - ","" 的 最后 "" 有什么深层的意思?
--------------------------------------------
作者:
Algalon
时间:
2013-8-22 09:51
sub把message中的"No such file or dirctory - " 替换成 "", 其实就是把这句英文去掉了而已,主要是为了汉化,改成了中文 "找不到文件 " 了。 错误信息和缺失文件名在Errno模组的ENOENT 类中(这是一个Singleton类),赋值给全局变量$!, message方法输出错误语句"No such file or dirctory - Graphics/Titles/001-Title01"。 这里先将输出的语句赋值给变量filename, 然后由于是双引号的string,可以用#{filename}获取该变量。
作者:
九靈
时间:
2013-8-22 12:14
本帖最后由 九靈 于 2013-8-22 12:50 编辑
如果只是为了汉化的话
为什么不改成
filename = $!.message.sub("No such file or dirctory - ", "找不到文件 ")
print("#{filename}。")
这样是不是也行?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1