是否可以为整个应用重新定义内置的ruby函数?
示例:
我想要一个新的puts定义:
def puts
return nil
end
我知道重新定义看跌期权是愚蠢的,但这只是一个例子。
提前致谢。
答案 0 :(得分:2)
当然,有可能:
module Kernel
def puts(*)
42
end
end
puts "does it work?"
#=> 42
问题是:它有意义吗? :)
答案 1 :(得分:2)
Tessi向您展示了严格的覆盖。相反,你也可以做一个包装:
module Kernel
alias :real_puts :puts
def puts *args
real_puts args
42
end
end
puts puts "Hello World", "Bye"
#Hello world
#Bye
#42