Archive for 10月, 2009

Problem2-Project Euler

Read more »

Problem 1 – Project Euler

Read more »

“Sinatra网络应用程序开发”将于12月份开课

我们的“Sinatra网络应用程序开发”培训马上就要开课啦!

我们将为此课程安排一个试听的Session,时间是本次培训的第一次课。因为试听Session的名额有限(暂定20-40人),请事先到我们的网站进行报名,我们将优先安排在网上进行报名的学员参加试听课程。

我们将在第一次试听课程结束的时候进行培训的现场报名,如果你没来得及在线报名或错过了我们是试听课程,请电话联系我们:0510-83594020。

请所有有兴趣参加我们课程培训的关注我们的网站,并及时报名。对我们的课程有任何意见和建议请在此留言。谢谢!

:)

闲看RUBY内嵌对象(二): Fixnumx,true,false,nil和undef

上次和大家一起讨论了Ruby的立即对象(immediate objects)之一:符号对象(Symbol),今天一并把其余的几个immediate objects给收拾了。

立即对象都是Ruby世界中轻量却不容小觑的人物,符号对象在Rails对码中随处可见,这个先按下不表。先贴出Fixnum,true,false,nil的C层次构造代码:

false true nil undef(ruby.h)

#define Qfalse ((VALUE)0)	/*false*/
#define Qtrue  ((VALUE)2)	/*true*/
#define Qnil   ((VALUE)4)	/*nil*/
#define Qundef ((VALUE)6)	/* undefined value for placeholder */

Fixnum(ruby.h)

#define FIXNUM_MAX (LONG_MAX>>1)
#define FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
 
#define FIXNUM_FLAG 0x01
#define INT2FIX(i) ((VALUE)(((long)(i))<<1 | FIXNUM_FLAG))
#define LONG2FIX(i) INT2FIX(i)
#define FIX2INT(x) rb_fix2int((VALUE)x)
#define FIXNUM_P(f) (((long)(f))&FIXNUM_FLAG)

再看看ruby是怎样判断某一对像是否为immediate object的,大家还记得上次说到的VALUE这个类型定义吗?当给定一个 VALUE 对象时,使用 TYPE 宏判断该对象的种类,例如 Symbol 对象类型为T_SYMBOL
Read more »



收藏 & 分享

Powered by 17fav.com