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