【发布时间】:2012-12-31 22:40:00
【问题描述】:
抱歉问题标题含糊不清,但我不知道是什么原因导致以下问题:
module Capistrano
class Configuration
def puts string
::Kernel.puts 'test'
end
end
end
现在当 Capistrano 调用 puts 时,我看不到“测试”,但我看到了原始输出。
但是,当我也添加这个时:
module Kernel
def puts string
::Kernel.puts 'what gives?'
end
end
现在,突然之间,puts 实际上返回“test”,而不是“what give?”,不是原始内容,而是“test”。
是否有合理的解释为什么会发生这种情况(除了我对 Ruby 内核的内部工作原理的有限理解)?
对我来说不合适的事情(但不知何故“似乎有效”):
- 我希望第一个块返回“测试”,但它没有
- 我希望这两个块的组合返回“what give?”,但它返回“test”?
- 我重写 Kernel.puts 的方式对我来说似乎是一个永无止境的循环?
【问题讨论】:
标签: ruby overriding puts