设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2658|回复: 1
打印 上一主题 下一主题

[已经解决] 如果用这种方式来构造一些复杂的对象呢?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1195
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

跳转到指定楼层
1
发表于 2011-1-19 12:03:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  1. class A
  2.   def initialize(a,b)
  3.   end
  4. end

  5. module Kernel
  6.   def A(*args)
  7.     args.each do |element|
  8.       element.each do |key,value|
  9.         eval("@#{key.id2name} = A.new(*value)")
  10.       end
  11.     end
  12.   end
  13. end
复制代码
如果构造诸如Window一类的对象,用这种方式会复杂么?


See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
2
发表于 2011-1-21 11:10:38 | 只看该作者
本帖最后由 苏小脉 于 2011-1-21 11:11 编辑

你想达成什么目的?自动化大量的对象创建过程?我可能会用二人合作模式,一个人从符号到参数的映射的一个阵列中拿出一个元素,交给它的伙伴来处理具体的创建。这样做就将任务划分为了两块。

一般来说,能避免 eval 就尽量避免,因为 eval 有额外的“分析时”开销(将字符串作为源代码进行词法、文法分析),而这个“剖析时”却又是在程序“运行时”进行的。把不需要惰性求值的表达式预先进行及早求值,能避免一些分析时开销。如果可能的话,用 instance_exec,或 instance_eval 带块的形式,也比直接在字符串上求值好。
[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-23 01:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表