所以,如果我理解正確的話,你正試圖寫一些你想鏈接在一個新的行,使其更具可讀性的方法?正如你發現的那樣,你不能將一個方法調用到一個新行中,因爲現在Ruby認爲你試圖在沒有任何東西的情況下調用一個方法。
我的假設是什麼,你所要完成的是這樣操作的:
lnk = <a href="https://stackoverflow.com/questions/21620460/how-to-chain-methods-in-ruby">Some Link</a>
f_name = lnk.href.split('/').last.gsub!(/[(]+/, "_").gsub!(/[)]+/, "_")
所以,你想找到並通過在/
分裂他們分手的HTML鏈接,然後拉出並操縱URL的最後部分。
有幾件事你可以做,使這更可讀性和邏輯性。一個是修復你的正則表達式。由於您使用的是.gsub!
,因此您已經在搜索所有匹配的事件,因此+
是不必要的。你也可以將你的兩個電話.gsub!
組合成這樣一個:.gsub!(/[()]/, "_")
這將匹配並替換所有出現的打開或關閉paren,使您的鏈一個方法更短。其餘的,我建議在合理的地方把它分成兩個步驟:在創建一個數據結構和處理數據結構之間。首先,創建子字符串數組:
f_name = lnk.href.split('/')
然後從數組操作數據:
manipulated_substring = f_name.last.gsub!(/[()]/, "_")
這將使你的代碼更易讀,並保持您的數據完好無損!
或''gsub!'返回'nil',以防這樣的替換被執行。 – Gumbo