道喜技术日记 .^. 天天红玉世界

Rails Ruby MacOSX 。。。创新来自于刻苦的实践和勤奋的思考... www.hhtong.com


代码世界:Ruby语言元编程的方法

Gudao Luo2008-08-06 at 04:31发表的

Ruby语言元编程的方法
使用函数eval
classname = 'Integer'
eval classname
(eval classname).to_s
eval classname + '.methods'
使用函数const_get
classname = 'Integer'
object = Kernel.const_get(classname)
object.methods
类Object的方法send
#Object.send(methodname)
#Object.send(methodname, parameter)
具体实例
class Company
def self.find(id)
id
end
end
company_id = 1
classname = 'Company'
object = Kernel.const_get(classname)
object.send(:find, company_id)
Company.find(company_id)
说明
# 最后两行代码从作用上而言是完全等价的
# 但是其编程实现方法是完全不同的
# 好比数学上的函数与泛函的相似概念