2013-03-22 34 views
4

我願意通過提供shuffleshuffle!方法猴補丁Ruby的String類。如何寫字符串猴補丁的方法,將修改它

class String 
    def shuffle 
    self.split('').shuffle.join 
    end 
end 

它返回一個新的字符串。我怎樣才能寫一個shuffle!方法來修改字符串而不是返回複製?


我嘗試自己看着辦吧,但串的源代碼是在C語言中MRI。

回答

9

您不能分配到self,這可能是我想到的第一件事。但是,有一種方便的方法String#replace,您知道它會替換字符串的內容。

class String 
    def shuffle 
    split('').shuffle.join 
    end 

    def shuffle! 
    replace shuffle 
    end 
end 

s = 'hello' 
s.shuffle! 
s # => "lhleo"