methodの前方でif-return,後方でreturnは好きじゃない
例えば,quicksortのアルゴリズムで以下のようなものがある. このように,複数にreturnが書いてあるのが好きじゃない.
def quicksort(array) return [] if array.length == 0 pivot = array.shift larger = array.select{|n| n > pivot} smaller_or_eq = array.select{|n| n <= pivot} return quicksort(smaller_or_eq) + [pivot] + quicksort(larger) end
書き方が自由なら...
多様な書き方ができるなら,三項演算子でif-elseを再現してlambdaの戻り値を渡してあげればいいんじゃないかと思う.
def quicksort(array) return array.length == 0 ? [] : ->{ pivot = array.shift larger = array.select{|n| n > pivot} smaller_or_eq = array.select{|n| n <= pivot} quicksort(smaller_or_eq) + [pivot] + quicksort(larger) }.call end