Vla*_*ich 1 ruby metaprogramming
几个月前我一直在使用一些红宝石库(我不记得哪一个,不幸的是)
我很惊讶地看到它允许我用这样的东西初始化它的实例:
Lib::SOMETHING(args)
Run Code Online (Sandbox Code Playgroud)
我真的不明白它是如何工作的.我非常确定它应该是动态的东西(没有SOMETHING常量),比如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"
Run Code Online (Sandbox Code Playgroud)
Net::HTTP做类似于它的Proxy类,它允许调用,如Net::HTTP::Proxy(...),它的定义类似:
def HTTP.Proxy(p_addr, p_port = nil, p_user = nil, p_pass = nil)
Run Code Online (Sandbox Code Playgroud)
对于类方法,您可以互换使用::或.调用它们.
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |