gpt4 book ai didi

Ruby:别名属于其他类或模块的方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:05 26 4
gpt4 key购买 nike

在解决编码挑战时,我遇到了这条指令:

If you need to debug, use 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​​ 关键字,它不允许我这样做。有没有办法给属于另一个类/模块的方法起别名?


我知道我可以将它包装到本地方法中(就像我所做的那样)。我的目的是进一步了解 ruby​​ 的可能性以及 alias 的工作方式。

最佳答案

我找到了一个解决方案,感谢 Holger Just , 就是使用 Forwardable :

require 'forwardable'
self.extend Forwardable
singleton_class.def_delegator "STDERR", "puts", "sp"

>> sp "a" "string"
astring

虽然它非常冗长而且我不确定它是否比将 STDERR.puts 包装到一个新方法中更好。

关于Ruby:别名属于其他类或模块的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com