几个月前我一直在使用一些 ruby 库(不幸的是我不记得到底是哪个)
我很惊讶地看到它允许我用类似的东西初始化它的实例:
Lib::SOMETHING(args)
我真的不明白它是如何工作的。我非常确定它应该是动态的(没有一些常量),比如 constant_missing
模块方法或者 ConstantMissing
异常以某种方式得到处理。
请问有什么建议吗?
最佳答案
理论上没有魔法,只是看起来很陌生:
class A
def self.I_LOOK_LIKE_A_CONST(arg)
puts arg
end
end
A::I_LOOK_LIKE_A_CONST("Hi") # => "Hi"
Net::HTTP
与它的 Proxy
类做了类似的事情,它允许诸如 Net::HTTP::Proxy(...)
,定义类似:
def HTTP.Proxy(p_addr, p_port = nil, p_user = nil, p_pass = nil)
妙语是,对于类方法,您可以互换使用 ::
或 .
来调用它们。
关于 ruby 救援常失踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133557/