0

私は Codeacademy の Ruby チュートリアルに取り組んでいますrev=falseが、if/else ステートメントに関連するメソッド パラメーターを理解するのに苦労しています。私はそれがどのように機能するかを知っていますが、なぜ機能するのかはわかりません。Codeacademy の説明は私を混乱させているので、ここに投稿しています。

これが逆に印刷されるのはなぜですか?puts "Z-A: #{alphabetize(books, true)}" との関係はrev=false)

def alphabetize(arr, rev=false)
        if rev
            arr.sort { |firstItem, secondItem|            
            secondItem <=> firstItem }
        else
           arr.sort { |firstItem, secondItem|            
           firstItem <=> secondItem }

        end
    end

    books = ["Heart of Darkness", "Code Complete", "The Lorax", "The Prophet", "Absalom, Absalom!"]

    puts "A-Z: #{(books)}"
    puts "Z-A: #{alphabetize(books, true)}"
4

1 に答える 1

0

並べ替え順序が逆になります。

secondItem <=> firstItem

対:

firstItem <=> secondItem

rev = falseデフォルト値を設定します。つまり、2 番目の引数を渡さない場合は、revに設定されfalseます。

これは次のように記述できます。

def alphabetize(arr, rev=false)
  if rev
    arr.sort.reverse
  else
    arr.sort
  end
end
于 2013-09-27T10:47:00.313 に答える