Sni*_*gus 9 ruby time alias overriding class
我找到了一个成功覆盖的源代码Time.strftime:
class Time
alias :old_strftime :strftime
def strftime
#do something
old_strftime
end
end
Run Code Online (Sandbox Code Playgroud)
麻烦的是,strftime是一种实例方法.我需要覆盖Time.now- 一个类方法 - 在任何调用者获取我的新方法的同时,新方法仍然调用原始.now方法.我看了看alias_method并没有成功.
小智 12
这有点难以理解,但你需要打开"特征类",这是与特定类对象相关联的单例.这个语法是类<< self do ... end.
class Time
alias :old_strftime :strftime
def strftime
puts "got here"
old_strftime
end
end
class Time
class << self
alias :old_now :now
def now
puts "got here too"
old_now
end
end
end
t = Time.now
puts t.strftime
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7008 次 |
| 最近记录: |