重新定义内置的ruby功能

时间:2013-09-12 15:50:00

标签: ruby

是否可以为整个应用重新定义内置的ruby函数?

示例:

我想要一个新的puts定义:

def puts
  return nil
end

我知道重新定义看跌期权是愚蠢的,但这只是一个例子。

提前致谢。

2 个答案:

答案 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