The global value true is the only instance of class TrueClass and represents a logically true value in boolean expressions. The class provides operators allowing true to be used in logical expressions.
And—Returns false if obj is nil or false, true otherwise.
/* * call-seq: * true & obj => true or false * * And---Returns <code>false</code> if <i>obj</i> is * <code>nil</code> or <code>false</code>, <code>true</code> otherwise. */ static VALUE true_and(obj, obj2) VALUE obj, obj2; { return RTEST(obj2)?Qtrue:Qfalse; }
Exclusive Or—Returns true if obj is nil or false, false otherwise.
/* * call-seq: * true ^ obj => !obj * * Exclusive Or---Returns <code>true</code> if <i>obj</i> is * <code>nil</code> or <code>false</code>, <code>false</code> * otherwise. */ static VALUE true_xor(obj, obj2) VALUE obj, obj2; { return RTEST(obj2)?Qfalse:Qtrue; }
The string representation of true is "true".
/* * call-seq: * true.to_s => "true" * * The string representation of <code>true</code> is "true". */ static VALUE true_to_s(obj) VALUE obj; { return rb_str_new2("true"); }
Or—Returns true. As anObject is an argument to a method call, it is always evaluated; there is no short-circuit evaluation in this case.
true | puts("or") true || puts("logical or")
produces:
or
/* * call-seq: * true | obj => true * * Or---Returns <code>true</code>. As <i>anObject</i> is an argument to * a method call, it is always evaluated; there is no short-circuit * evaluation in this case. * * true | puts("or") * true || puts("logical or") * * <em>produces:</em> * * or */ static VALUE true_or(obj, obj2) VALUE obj, obj2; { return Qtrue; }