查看: 7990|回复: 31

[随意闲聊] 最美不过RUBY。

[复制链接]

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
回帖
1260

贵宾

发表于 2011-7-20 03:45:44 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 神思 于 2011-7-20 03:49 编辑

哈哈,过下瘾而已,编码编的头都晕晕的了。
  1. class SuperObject
  2.   def method_missing(method, *args)
  3.     if(@@methodsMap[[method,args.length]] != nil)
  4.       return SuperObject.call(method, *args);
  5.     else
  6.       return super
  7.     end
  8.   end
  9.   
  10.   @@methodsMap = Hash.new();
  11.   def self.define(method, &proc)
  12.     @@methodsMap[[method, proc.arity]] = proc;
  13.   end
  14.   
  15.   def self.call(method, *args)
  16.     @@methodsMap[[method, args.length]].call(*args);
  17.   end
  18.   
  19.   def self._return(*args)
  20.     return *args;
  21.   end
  22.   
  23.   define(:print){|arg1|
  24.     _return arg1 * 2;
  25.   }
  26.   
  27.   define(:print){|arg1, arg2|
  28.     _return arg1 * 2 * arg2
  29.   }
  30.   
  31. end

  32. p SuperObject.new().print(2);

  33. j = SuperObject.new().print(2, 2);
  34. p "j=#{j}";
复制代码

评分

参与人数 5星屑 +48 梦石 +4 赞 +2 收起 理由
Ж纯Ж蓝Ж + 20 给力。
玮哥投胎了 + 2 + 2 + 2 虽然看不懂,但直觉感到好像不错,给分吧。.
v2sam + 2 你是个好人!
Kimu + 20 精髓啊
darkscout3000 + 6 +1 ... 果断收走

查看全部评分

-.-

孤独守望

梦石
0
星屑
3144
在线时间
1535 小时
注册时间
2006-10-16
回帖
4223

开拓者贵宾

发表于 2011-7-20 06:30:37 来自手机 | 显示全部楼层
你赢了= =b 再来个__id__吧
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复

使用道具 举报

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
回帖
557
发表于 2011-7-20 07:02:27 | 显示全部楼层
好高深的代码
1、@@methodsMap后面为什么用两个[[ ]] ?
2、method_missing这个方法在哪里调用了?还是说print会自动调用?
3、define这个是什么意思?什么作用?
最近在研究XAS
回复

使用道具 举报

梦石
0
星屑
1580
在线时间
1564 小时
注册时间
2008-7-30
回帖
4207

贵宾

发表于 2011-7-20 07:13:45 | 显示全部楼层
动态可是Rubu的魂啊。

点评

*ruby  发表于 2011-7-27 18:43

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

使用道具 举报

梦石
0
星屑
100
在线时间
169 小时
注册时间
2007-8-12
回帖
198
发表于 2011-7-26 18:29:08 来自手机 | 显示全部楼层
赛露休斯 发表于 2011-7-20 07:02
好高深的代码
1、@@methodsMap后面为什么用两个[[ ]] ?
2、method_missing这个方法在哪里调用了?还是说pr ...

1 @@methodsMap是一个哈希表,其键是数组,所以用了两个[]
2 这个方法会在找不到方法的时候调用
3 define会把语句块作为值,参数和语句块中的参数个数组成的数组作为键,写入哈希表中

总之就是把proc作为方法来用啦
回复

使用道具 举报

梦石
0
星屑
239
在线时间
2399 小时
注册时间
2008-4-11
回帖
11727

贵宾第6届短篇游戏比赛季军

发表于 2011-7-26 18:48:21 | 显示全部楼层
Proc.new这个好熟悉,貌似昨天刚和剑剑说到这个
回复

使用道具 举报

乌有君
乌有君  发表于 2011-7-26 19:32:39
本帖最后由 匿名 于 2011-7-26 19:32 编辑


自从用了RUBY,DOS也能多线程
自从到处充满了EVAL,教科书上的哈佛VS冯诺依曼结构大战实际上冯诺依曼已经被败了。
自从充满了动态,呃……等等C那里其实也能做到,不过不是每个人都能适应漫天的指针和一大堆需要自己操作的东西
回复

使用道具 举报

真实之终章

梦石
0
星屑
60
在线时间
48 小时
注册时间
2008-8-7
回帖
279
发表于 2011-7-26 20:25:46 来自手机 | 显示全部楼层
匿名者 发表于 2011-7-26 19:32
自从用了RUBY,DOS也能多线程
自从到处充满了EVAL,教科书上的哈佛VS冯诺依曼结构大战实际上冯诺 ...

C不是编译的么,如何动态…
玫瑰绽放,彼岸流殇。
回复

使用道具 举报

梦石
1
星屑
12044
在线时间
4536 小时
注册时间
2005-10-22
回帖
7102

开拓者贵宾

发表于 2011-7-26 21:26:57 | 显示全部楼层
胖达达人 发表于 2011-7-26 20:25
C不是编译的么,如何动态…

C能写RUBY解释器~\(≧▽≦)/~
所以RUBY还是C(大雾)

点评

我是被你帖子数吸附过来的【- b 好强引力】  发表于 2011-7-27 16:44
没黑幕?难得  发表于 2011-7-27 12:10
难的不黑幕。。。留名。。。  发表于 2011-7-27 00:34
-v-少见的不匿名啊,  发表于 2011-7-26 22:34
=v=  发表于 2011-7-26 22:12
回复

使用道具 举报

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
回帖
6429

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

发表于 2011-7-26 22:31:29 | 显示全部楼层
c能实现伪动态。。。
神隐中,偶尔诈尸
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部