Project1
标题:
如果用这种方式来构造一些复杂的对象呢?
[打印本页]
作者:
DeathKing
时间:
2011-1-19 12:03
标题:
如果用这种方式来构造一些复杂的对象呢?
class A
def initialize(a,b)
end
end
module Kernel
def A(*args)
args.each do |element|
element.each do |key,value|
eval("@#{key.id2name} = A.new(*value)")
end
end
end
end
复制代码
如果构造诸如Window一类的对象,用这种方式会复杂么?
out.png
(8.57 KB, 下载次数: 25)
下载附件
保存到相册
2011-1-19 12:03 上传
作者:
苏小脉
时间:
2011-1-21 11:10
本帖最后由 苏小脉 于 2011-1-21 11:11 编辑
你想达成什么目的?自动化大量的对象创建过程?我可能会用二人合作模式,一个人从符号到参数的映射的一个阵列中拿出一个元素,交给它的伙伴来处理具体的创建。这样做就将任务划分为了两块。
一般来说,能避免 eval 就尽量避免,因为 eval 有额外的“分析时”开销(将字符串作为源代码进行词法、文法分析),而这个“剖析时”却又是在程序“运行时”进行的。把不需要惰性求值的表达式预先进行及早求值,能避免一些分析时开销。如果可能的话,用 instance_exec,或 instance_eval 带块的形式,也比直接在字符串上求值好。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1