我目前正在學習Ruby,我似乎無法環繞if /start/../end
做什麼......幫助?這個Ruby代碼如何工作 - 如果使用範圍來控制?
while gets
print if /start/../end/
end
我目前正在學習Ruby,我似乎無法環繞if /start/../end
做什麼......幫助?這個Ruby代碼如何工作 - 如果使用範圍來控制?
while gets
print if /start/../end/
end
既然你提到,你是新來的Ruby,它是第一個值得考慮的是你正在處理的例子正則表達式(正則表達式)注 - 任何在兩個前鋒之間的分隔斜線:
/start/ # a regular expression literal
正則表達式是匹配較大字符串中某些字母組合的有效方法。
"To start means to begin." =~ /start/ #=> true, because 'start' is in the string.
雙點符號是觸發器操作,一個有爭議的結構可能是由Perl的繼承,通常不建議使用,因爲它會導致混亂。
它表示如下: 它將集體評估爲false,直到左手操作數爲真。在這一點上,它將共同評估爲真。然而,只有當右手操作數的計算結果爲真時,它纔會保持真實 - 在這一點上,它將再次被評估爲假。使用您上面的例子
因此:
while gets
print if /start/../end/
end
它被稱爲觸發器操作符。您可以在「Ruby flip-flop operator」閱讀更多內容。
正則表達式不一定是使用'/'創建的。它們也可以使用Regexp類中的'%r'和方法創建。 –
雖然'/ foo /../bar/'並不爲人所熟知,它非常簡潔明瞭,是抓取文本塊的好方法,特別是從文件讀取時。我已經看到人們試圖用方法替換它,但是由此產生的代碼是一團糟。是的,它與'''範圍操作符視覺衝突,但它的用處使它值得了解。 –
非常感謝,您的回答非常有幫助!本書中沒有提及觸發器操作符,但代碼示例仍然使用它,所以我徹底困惑了! –