Ruby 中的对象个性化与可调用对象
1. 修改核心对象行为
我们可以通过创建模块来修改核心对象(如字符串、数组、哈希等)的行为,而无需重新打开它们的类,也不会引入全局级别的更改。以下是具体步骤:
1. 创建模块 :创建一个名为 GsubBangModifier 的模块,并在其中定义 gsub! 方法。在这个模块中,不能为现有的 gsub! 方法提供别名,因为模块并不知道“现有的” gsub! 方法,尝试别名会导致错误。我们使用 super 来调用原方法。
module GsubBangModifier
def gsub!(*args, &block)
result = super
result.nil? ? self : result
end
end
- 扩展对象 :创建一个字符串,并使用
GsubBangModifier模块扩展它。
str = "example"
str.extend(GsubBangModifier)
- 调用方法 :当调用这个字符串的
gsub!
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



