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

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


Ruby世界:元编程函数一例

Gudao Luo2011-03-20 at 20:15发表的

  • 说明
    • 所有函数的不同内容都写入到变量legos中
    • 函数本身参数写入do之后的两竖之中

代码世界: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)
说明
# 最后两行代码从作用上而言是完全等价的
# 但是其编程实现方法是完全不同的
# 好比数学上的函数与泛函的相似概念