在 Ruby 中,我们有类似 string.upcase 的方法,它返回一个新的字符串和 string.upcase!它修改了调用它的字符串。
我想知道如何编写自己的 !方法的版本。
我正在编写一个在两个字符之间搜索字符串的方法。我希望它修改字符串以等于新字符串。
如何做到这一点。 (我有找到新字符串的方法只需要知道如何修改调用者)
回答
class String
def find_between(marker_one , marker_two)
self[/#{Regexp.escape(marker_one)}(.*?)# {Regexp.escape(marker_two)}/m, 1]
end
def find_between!(marker_one , marker_two)
self.replace(find_between(marker_one, marker_two))
end
end
最后 self.replace 是需要的
最佳答案
就像一个普通的方法:
def mathod_name!
# whatever
end
然而,惯例是,只有当您有同名方法的“正常” 版本并且此版本在某种程度上“危险”.
您可以使用 String#[]=
就地修改字符串。
关于ruby - 如何实现! ruby 中的样式方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40931191/