Ruby的method name是不是都有一个对应的symbol?
看到一段代码:
[code="java"]
String.public_method_defined? :reverse # => true
String.protected_method_defined? :reverse # => false
String.private_method_defined? :initialize # => true
String.method_defined? :upcase! # => true
[/code]
代码的功能倒是没什么,但是我不明白的是里面的:initialize等symbol是怎么匹配函数的?
是不是类在定义函数的时候已经自动生成类对应的symbol?
恩谢谢~~
简单答案:是。
方法可看作消息,调用方法即发送消息。
a.b 相当于 a.send :b
Ruby Symbol使用
http://www.iteye.com/topic/80089
Ruby小道之Symbol
http://www.iteye.com/topic/109697
module、class、singleton class之类的能定义方法的地方都会记录下Symbol到方法的映射,所以可以通过Symbol来查询到方法。