Support for the Ruby 2.4 series has ended. See here for reference.
The class of the singleton object nil.
And—Returns false. obj is always evaluated as it is the argument to a method call—there is no short-circuit evaluation in this case.
static VALUE
false_and(VALUE obj, VALUE obj2)
{
return Qfalse;
}
Case Equality – For class Object, effectively the same as calling #==, but typically overridden by descendants to provide meaningful semantics in case statements.
VALUE
rb_equal(VALUE obj1, VALUE obj2)
{
VALUE result;
if (obj1 == obj2) return Qtrue;
result = rb_funcall(obj1, id_eq, 1, obj2);
if (RTEST(result)) return Qtrue;
return Qfalse;
}
Exclusive Or—If obj is nil or false, returns false; otherwise, returns true.
static VALUE
false_xor(VALUE obj, VALUE obj2)
{
return RTEST(obj2)?Qtrue:Qfalse;
}
Always returns the string “nil”.
static VALUE
nil_inspect(VALUE obj)
{
return rb_usascii_str_new2("nil");
}
Only the object nil responds true to nil?.
static VALUE
rb_true(VALUE obj)
{
return Qtrue;
}
Returns zero as a rational. The optional argument eps is always ignored.
static VALUE
nilclass_rationalize(int argc, VALUE *argv, VALUE self)
{
rb_scan_args(argc, argv, "01", NULL);
return nilclass_to_r(self);
}
Always returns an empty array.
nil.to_a #=> []
static VALUE
nil_to_a(VALUE obj)
{
return rb_ary_new2(0);
}
Returns zero as a complex.
static VALUE
nilclass_to_c(VALUE self)
{
return rb_complex_new1(INT2FIX(0));
}
Always returns zero.
nil.to_f #=> 0.0
static VALUE
nil_to_f(VALUE obj)
{
return DBL2NUM(0.0);
}
Always returns an empty hash.
nil.to_h #=> {}
static VALUE
nil_to_h(VALUE obj)
{
return rb_hash_new();
}
Always returns zero.
nil.to_i #=> 0
static VALUE
nil_to_i(VALUE obj)
{
return INT2FIX(0);
}
Returns zero as a rational.
static VALUE
nilclass_to_r(VALUE self)
{
return rb_rational_new1(INT2FIX(0));
}