2011-10-22 100 views
2

我發現有很多資源怎麼辦加上「普通」的方法爲String。紅寶石添加方法!(帶感嘆號)字符串

Add custom method to string object

但我還沒有找到任何信息如何添加「破壞性」方法,感嘆號String類。

有人可以改寫這個方法爲「破壞性的一個」?

def nextval 
    case self 
    when "A" 
    return "B" 
    when "B" 
    return "C" 
    # etc 
    end 
end 

[這個例子很簡單,我想更復雜的方法添加到字符串]

我想才達到類似subsub!方法。

+0

你需要更具體。你可以大概只有變異被公開曝光,除非你深入到私有的API,其中最有可能將剛剛回來困擾你的事情;) – d11wtq

+0

你的意思是你想改變* *'self'以「B值「,」C「等? –

+0

啊,我明白你在做什麼...... – d11wtq

回答

4

只需使用已被字符串提供的破壞性的方法。

def nextval! 
    case self 
    when "A" 
    replace("B") 
    when "B" 
    replace("C") 
    # etc 
    end 
end 
+0

哇,它的工作原理。 :) 謝謝。 +1並接受(必須等待4分鐘..)。 –

1

有這樣的方法 - String#next!

a = "foo" 
a.next! # => "fop" 
puts a # => "fop" 
+0

我知道。但我只是舉例說明了這段代碼。我想添加更復雜的方法。 –

+0

對於'破壞性'方法,您應該在名稱方法(這只是一個約定)末尾添加感嘆號,並對「自我」進行一些更改。但並非所有的方法!最後是破壞性的,即'at_exit!',所以標記通常表示該方法應謹慎使用。 – WarHog