这是啥 '?' #map 中的运算符在做啥? [复制]

Posted

技术标签:

【中文标题】这是啥 \'?\' #map 中的运算符在做啥? [复制]【英文标题】:What is this '?' operator in #map doing? [duplicate]这是什么 '?' #map 中的运算符在做什么? [复制] 【发布时间】:2014-11-28 00:46:35 【问题描述】:

在这里查看这段代码:

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

我对 ?#map 中的 include? 之后发生了什么感到非常困惑 - 这是运算符还是方法快捷方式?

还想知道在这种情况下,: 究竟被称为什么,以及它的作用。

谢谢!

【问题讨论】:

是ternary operator。 嗯,它是 a 三元运算符,特别是条件运算符。 【参考方案1】:

这是一个三元运算符。它表示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>

【讨论】:

"turnery" != "ternary" 很高兴@theTinMan,谢谢 ;)

以上是关于这是啥 '?' #map 中的运算符在做啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

spark jdbc df limit ...它在做啥?

这行 Java 代码在做啥?

$ 在 Haskell 中是啥意思/做啥?

Ajax是啥意思,它是在做啥用的?

调试这个 LISP 病毒在做啥

这段代码中的 lambda 函数在做啥? [复制]