0

我正在阅读 Codeacademy 上的 Ruby 教程,我正在努力理解与rev=falseif/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设置默认值,即如果您不传递第二个参数,rev则设置为false.

这可以写成:

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