在解决编码挑战时,我遇到了这条指令:
如果您需要调试,请使用
STDERR.puts
所以我想到将STDERR.puts
别名化为sp
:
>> alias :sp STDERR.method(:puts)
SyntaxError: (irb):96: syntax error, unexpected '.', expecting end-of-input
alias :sp STDERR.method(:puts)
^
由于alias
是一个ruby关键字,它不允许我这样做。有没有办法为属于另一个类/模块的方法添加别名?
alias
的工作方式。
答案 0 :(得分:1)
由于Holger Just,我找到的一个解决方案是使用Forwardable:
require 'forwardable'
self.extend Forwardable
singleton_class.def_delegator "STDERR", "puts", "sp"
>> sp "a" "string"
astring
虽然它非常详细,但我不确定将STDERR.puts
包装到新方法中会更好。