在macruby中,Module的方法“__type__”有什么作用?

时间:2011-09-01 23:57:08

标签: macruby

macruby中的

Module有许多通常不具备的方法。其中一个是__type__,我似乎无法弄清楚它的作用。它做了什么?

谢谢!

Ž。

1 个答案:

答案 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扩展时更有效地进行类型检查。

相关问题