2013-09-12 4 views
0

Возможно ли переопределить встроенную функцию рубина для всего приложения?Переопределение встроенной функции рубина

Пример:

Я хочу, чтобы новые определения для опционов пут:

def puts 
    return nil 
end 

Я знаю, что переопределение пут глупо, но это всего лишь пример.

Заранее спасибо.

+2

Да, это так; у вас есть конкретная проблема? –

+0

Вам просто нужно заново открыть 'class' или' module', который содержит метод/функцию, которые вы хотите переопределить. –

ответ

2

Конечно, можно:

module Kernel 
    def puts(*) 
    42 
    end 
end 

puts "does it work?" 
#=> 42 

Вопрос: Имеет ли смысл? :)

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 
Смежные вопросы