2011-10-13 29 views
2

我有這個RoR代碼如下;檢查正則表達式是否與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行。 我基本上沒有回報經驗,所以看着這段代碼我把它看作 如果error_regex.nil不是零然後繼續

但是最新的?對於 我不能只是做

if !error_regex.nil 

正則表達式都很好,我只是試圖讓我的頭圍繞這句法。

回答

3

問號用於表示按照慣例,該方法返回一個布爾值。類似的例子是include?爲陣列,(返回true如果陣列具有給定元素中的話),empty?絃樂(返回true如果string == ""),和用於zero?整數(返回true如果int是零)。

所以這不是Rails的特定 - 它是特定於Ruby的。

1

問號是方法名稱的一部分。沒有它,你正在調用一種完全不同的方法。問號實際上並不是做的什麼,這只是一個約定,正如Chris Bunch所說。但是因爲Ruby已經命名了方法nil?,所以你必須這樣稱呼它。