2013-09-27 36 views
0

我正在研究Codeacademy上的Ruby教程,我很努力地理解與if/else語句有關的方法參數rev=false我知道它是如何工作的,但不知道它爲什麼起作用。 Codeacademy的描述令我感到困惑,這就是我在這裏發佈的原因。方法(rev = false)與if語句之間的關係

這是什麼打印反向? 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)}" 

回答

0

的排序順序是相反的:

secondItem <=> firstItem 

VS:

firstItem <=> secondItem 

rev = false設置一個默認值,也就是說,如果你沒有通過第二個參數,rev設爲false

這本來是寫爲:

def alphabetize(arr, rev=false) 
    if rev 
    arr.sort.reverse 
    else 
    arr.sort 
    end 
end 
+0

請問TRUE;在'把 「Z-A:#{按字母順序排列(書籍,真)}」'適用於'rev'? – HandDisco

+0

準確地說,它將'arr'設置爲'books'和'rev'爲'true'。 – Stefan

+0

好吧,我明白了。你認爲這個練習是用於示範的目的嗎?看起來令人費解的是,這樣做還是最簡單的代碼使用? – HandDisco