我有这个RoR代码如下;
1. error_regex = /\|FileName.exe\|((dlg|frm|cls).*?)/
2. error_regex.match(backtrace)
3. if !error_regex.nil?
4. file_name = error_regex[1].sub!(/\.zip/, '')
5. file_name
6. end
所以我的问题是,这里第3行发生了什么。 我基本上没有RoR经验,所以看看这段代码我就把它读成了 如果error_regex.nil不是nil则继续
但是什么?对于 我不能这样做
if !error_regex.nil
正则表达式都很好,我只想试着理解这种语法。
答案 0 :(得分:3)
问号用于表示按惯例,该方法返回一个布尔值。对于Arrays,类似的示例是include?
,如果数组中包含给定元素,则返回true
,对于字符串,返回empty?
(如果true
则返回string == ""
)和zero?
for Integers(如果int为零,则返回true
。)
所以它不是特定于Rails的 - 它是特定于Ruby的。
答案 1 :(得分:1)
问号是方法名称的一部分。没有它,你会称之为完全不同的方法。问题标记实际上并没有做任何东西,它只是一个惯例,正如Chris Bunch所说。但是因为Ruby命名方法nil?
,你必须这样称呼它。