質問: 特定の上限によって演算子`||`の前後を入れ替えたいので以下のように書いています。 ``` def foo_or_bar return foo || bar if condition bar || foo end ``` ただ`foo`と`bar`が入れ替わるだけという事を活かした うまい書き方はないかと思い質問いたしました。 何かそのような記述方法はありますか?
回答: `||` は短絡評価機能があって、第1項で結果が確定する (この場合、第1項が真) と第2項を評価しない(副作用も発生しない)、という動作をしますよね。そこまで再現するのは難しそうです。 また、 `||` はメソッドではない (`true.methods.grep(/\|\|/) #=> []`) ので、リフレクションを活用する(`.inject(&:||)` 的なこと)も難しそうです。 形が非対称であるところをどうにかしたいのであれば、 `if` や三項演算子で書いたほうがいいかもしれません。