Ruby中同名方法内如何调用标准库同名方法?
在自定义print方法中调用Ruby标准print的方案
当你在类内重定义了print方法后,直接调用print会触发自定义实现,要调用Ruby原生的标准print,可以通过以下两种方式实现:
1. 显式调用Kernel模块的print方法
Ruby的标准print是Kernel模块提供的实例方法,所有类都会默认混入Kernel。因此可以直接通过Kernel.print来指定调用原生方法:
class MyClass def print(content) # 调用标准print输出前缀 Kernel.print("[原生输出] ") # 自定义print的逻辑 puts content end end obj = MyClass.new obj.print("这是自定义print的内容")
2. 使用super调用父类的print方法
如果你的类没有显式继承其他自定义类,父类就是Object,而Object的print方法就是原生的Kernel实现。此时可以用super来调用父类的print:
class MyClass def print(*args) # 调用父类的原生print super("原生输出内容:") # 自定义逻辑 puts args.join(" ") end end obj = MyClass.new obj.print("自定义", "内容")
注意:使用super时要保证参数匹配原生print的签名(原生print支持多个参数),否则会报错。
内容的提问来源于stack exchange,提问作者Nisanio
相关产品推荐
相关产品推荐

