我正在构建一个gem,它会为每个puts
输出附加一个特定的字符串。用例可能如下所示:
string_to_append = " hello world!"
puts "The web server is running on port 80"
# => The web server is running on port 80 hello world!
我不知道该怎么做。它的伪代码可能是这样的:
class GemName
def append
until 2 < 1
if puts_is_used == true
puts string << "hello world!"
else
puts ""
end
end
end
end
非常感谢任何有关如何做到这一点的最佳方法的见解。
答案 0 :(得分:4)
这可以通过别名轻松完成。我会说这是一种非常常见的装饰方法。
# "open" Kernel module, that's where the `puts` lives.
module Kernel
# our new puts
def puts_with_append *args
new_args = args.map{|a| a + ' hello world'}
puts_without_append *new_args
end
# back up name of old puts
alias_method :puts_without_append, :puts
# now set our version as new puts
alias_method :puts, :puts_with_append
end
puts 'foo'
# >> foo hello world
# it works with multiple parameters correctly
puts 'bar', 'quux'
# >> bar hello world
# >> quux hello world