APIdock / Ruby
/
method

__id__

ruby latest stable - Class: Object

Method deprecated or moved

This method is deprecated or moved on the latest stable version. The last existing version (v1_9_2_180) is shown here.

__id__()
public

Returns an integer identifier for obj. The same number will be returned on all calls to id for a given object, and no two active objects will share an id. Object#object_id is a different concept from the :name notation, which returns the symbol id of name. Replaces the deprecated Object#id.

VALUE
rb_obj_id(VALUE obj)
{
 /*
 * 32-bit VALUE space
 * MSB ------------------------ LSB
 * false 00000000000000000000000000000000
 * true 00000000000000000000000000000010
 * nil 00000000000000000000000000000100
 * undef 00000000000000000000000000000110
 * symbol ssssssssssssssssssssssss00001110
 * object oooooooooooooooooooooooooooooo00 = 0 (mod sizeof(RVALUE))
 * fixnum fffffffffffffffffffffffffffffff1
 *
 * object_id space
 * LSB
 * false 00000000000000000000000000000000
 * true 00000000000000000000000000000010
 * nil 00000000000000000000000000000100
 * undef 00000000000000000000000000000110
 * symbol 000SSSSSSSSSSSSSSSSSSSSSSSSSSS0 S...S % A = 4 (S...S = s...s * A + 4)
 * object oooooooooooooooooooooooooooooo0 o...o % A = 0
 * fixnum fffffffffffffffffffffffffffffff1 bignum if required
 *
 * where A = sizeof(RVALUE)/4
 *
 * sizeof(RVALUE) is
 * 20 if 32-bit, double is 4-byte aligned
 * 24 if 32-bit, double is 8-byte aligned
 * 40 if 64-bit
 */
 if (TYPE(obj) == T_SYMBOL) {
 return (SYM2ID(obj) * sizeof(RVALUE) + (4 << 2)) | FIXNUM_FLAG;
 }
 if (SPECIAL_CONST_P(obj)) {
 return LONG2NUM((SIGNED_VALUE)obj);
 }
 return (VALUE)((SIGNED_VALUE)obj|FIXNUM_FLAG);
}

AltStyle によって変換されたページ (->オリジナル) /