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; }