29889


特定の上限によって演算子`||`の前後を入れ替えたいので以下のように書いています。

[code]

    def foo_or_bar
      return foo || bar if condition
      bar || foo
    end
    
[/code]

ただ`foo`と`bar`が入れ替わるだけという事を活かした  
うまい書き方はないかと思い質問いたしました。

何かそのような記述方法はありますか？


CC BY-SA 3.0
2016-10-24T23:55:08.913
29875
2016-10-25T09:56:37.837
3271
question
ruby
演算子 "||" の前後を入れ替える書き方について


`||` は短絡評価機能があって、第1項で結果が確定する (この場合、第1項が真)
と第2項を評価しない(副作用も発生しない)、という動作をしますよね。そこまで再現するのは難しそうです。  
また、 `||` はメソッドではない (`true.methods.grep(/\|\|/) #=> []`)
ので、リフレクションを活用する(`.inject(&:||)` 的なこと)も難しそうです。

形が非対称であるところをどうにかしたいのであれば、 `if` や三項演算子で書いたほうがいいかもしれません。


CC BY-SA 3.0
2016-10-25T09:56:37.837
29889
2016-10-25T09:56:37.837
17037
29875
answer