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.
/*
* call-seq:
* false & obj => false
* nil & obj => false
*
* And---Returns <code>false</code>. <i>obj</i> 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(obj, obj2)
VALUE obj, obj2;
{
return Qfalse;
}
Exclusive Or—If obj is nil or false, returns false; otherwise, returns true.
/*
* call-seq:
* false ^ obj => true or false
* nil ^ obj => true or false
*
* Exclusive Or---If <i>obj</i> is <code>nil</code> or
* <code>false</code>, returns <code>false</code>; otherwise, returns
* <code>true</code>.
*
*/
static VALUE
false_xor(obj, obj2)
VALUE obj, obj2;
{
return RTEST(obj2)?Qtrue:Qfalse;
}
Always returns the string "nil".
/*
* call-seq:
* nil.inspect => "nil"
*
* Always returns the string "nil".
*/
static VALUE
nil_inspect(obj)
VALUE obj;
{
return rb_str_new2("nil");
}
Always returns an empty array.
nil.to_a #=> []
/*
* call-seq:
* nil.to_a => []
*
* Always returns an empty array.
*
* nil.to_a #=> []
*/
static VALUE
nil_to_a(obj)
VALUE obj;
{
return rb_ary_new2(0);
}
Always returns zero.
nil.to_f #=> 0.0
/*
* call-seq:
* nil.to_f => 0.0
*
* Always returns zero.
*
* nil.to_f #=> 0.0
*/
static VALUE
nil_to_f(obj)
VALUE obj;
{
return rb_float_new(0.0);
}
Always returns zero.
nil.to_i #=> 0
/*
* call-seq:
* nil.to_i => 0
*
* Always returns zero.
*
* nil.to_i #=> 0
*/
static VALUE
nil_to_i(obj)
VALUE obj;
{
return INT2FIX(0);
}
Always returns the empty string.
nil.to_s #=> ""
/*
* call-seq:
* nil.to_s => ""
*
* Always returns the empty string.
*
* nil.to_s #=> ""
*/
static VALUE
nil_to_s(obj)
VALUE obj;
{
return rb_str_new2("");
}
Or—Returns false if obj is nil or false; true otherwise.
/*
* call-seq:
* false | obj => true or false
* nil | obj => true or false
*
* Or---Returns <code>false</code> if <i>obj</i> is
* <code>nil</code> or <code>false</code>; <code>true</code> otherwise.
*/
static VALUE
false_or(obj, obj2)
VALUE obj, obj2;
{
return RTEST(obj2)?Qtrue:Qfalse;
}