Module
有许多通常不具备的方法。其中一个是__type__
,我似乎无法弄清楚它的作用。它做了什么?
谢谢!
Ž。
答案 0 :(得分:1)
__type__
在object.c中定义为:
static VALUE
rb_obj_type(VALUE obj)
{
return LONG2FIX(TYPE(obj));
}
依次取决于rb_type
函数:
static inline int
rb_type(VALUE obj)
{
if (IMMEDIATE_P(obj)) {
if (FIXNUM_P(obj)) {
return T_FIXNUM;
}
if (FIXFLOAT_P(obj)) {
return T_FLOAT;
}
if (obj == Qtrue) {
return T_TRUE;
}
if (obj == Qundef) {
return T_UNDEF;
}
}
else if (!RTEST(obj)) {
if (obj == Qnil) {
return T_NIL;
}
if (obj == Qfalse) {
return T_FALSE;
}
}
return rb_objc_type(obj);
}
当然,它只返回一个与类型标识符相对应的数字,由预编译器常量T_FIXNUM,T_FLOAT等定义。
我会说它对于标准用户来说是非常有限的用途,尽管它可以使你的代码在编写C扩展时更有效地进行类型检查。