在这里查看这段代码:
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
发生的事情感到非常困惑 - 这是一个操作符还是一个方法快捷方式?
还想知道在这种情况下调用:
究竟是什么,以及它做了什么。
谢谢!
答案 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>