我想通过提供shuffle
和shuffle!
方法来猴子补丁 Ruby 的 String 类。
class String
def shuffle
self.split('').shuffle.join
end
end
它返回一个新字符串。如何编写shuffle!
修改字符串而不是返回副本的方法?
我试图自己弄清楚,但 String 的源代码在 MRI 中是 C 语言。
我想通过提供shuffle
和shuffle!
方法来猴子补丁 Ruby 的 String 类。
class String
def shuffle
self.split('').shuffle.join
end
end
它返回一个新字符串。如何编写shuffle!
修改字符串而不是返回副本的方法?
我试图自己弄清楚,但 String 的源代码在 MRI 中是 C 语言。
您不能分配给self
,这可能是首先想到的。但是,有一个方便的方法String#replace
,您知道,它可以替换字符串的内容。
class String
def shuffle
split('').shuffle.join
end
def shuffle!
replace shuffle
end
end
s = 'hello'
s.shuffle!
s # => "lhleo"