|| (or) evaluates its left hand side. If it's falsey, it evaluates its right hand side and has that value. Otherwise it has the value of the left hand side. Its type is the union of the types of both sides.
You can think an
|| as syntax sugar of an
some_exp1 || some_exp2 # The above is the same as: tmp = some_exp1 if tmp tmp else some_exp2 end
To the extent possible under law, the persons who contributed to this workhave waived
all copyright and related or neighboring rights to this workby associating CC0 with it.