我想通过提供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"