方法(rev = false)与if语句和puts的关系

时间:2013-09-27 10:39:01

标签: ruby methods function

我正在编写关于Codeacademy的Ruby教程,并且我正在努力理解与if / else语句相关的方法参数rev=false我知道它是如何工作的,但不知道它的工作原理。 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)}"

1 个答案:

答案 0 :(得分: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