这是什么 '?' #map中的运算符在做什么?

时间:2014-10-02 22:46:08

标签: ruby map operator-keyword

在这里查看这段代码:

class Book
  def title
    @title
  end

  def title=(title)
    @title = titlieze(title)
  end

  private
  def titlieze(title)
    stop_words = %w(and in the of a an)
    title.capitalize.split.map{|w| stop_words.include?(w) ? w : w.capitalize}.join(' ')
  end
end

我对? include?之后#map发生的事情感到非常困惑 - 这是一个操作符还是一个方法快捷方式?

还想知道在这种情况下调用:究竟是什么,以及它做了什么。

谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个三元运营商。它表示ternary operation,它基本上作为if-else语句。所以这个:

stop_words.include?(w) ? w : w.capitalize

基本上变成了这个:

if stop_words.include?(w)
    return w
else
    return w.capitalize
end

以下是我对三元操作的看法:

(<if condition>) ? <thing to do if true> : <thing to do if false>