Archive for 10月, 2009
“Sinatra网络应用程序开发”将于12月份开课
10月 22nd, 2009 培训信息Tags: Ruby, Sinatra
我们的“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 »