需要一个ruby块解释

时间:2015-04-02 01:45:26

标签: ruby-on-rails ruby

我想知道是否有人可以向我解释

  

? w:w.capitalize

块意味着:

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

非常感谢任何帮助......提前谢谢。

3 个答案:

答案 0 :(得分:1)

那里是ternary operator。这样:

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

表示与:

相同
if stop_words.include?(w)
  w
else
  w.capitalize
end

答案 1 :(得分:0)

它是Ternary Operator

对于w中的每个单词title,如果w中包含stop_words,则返回w其他大写w并将其返回给映射器。

答案 2 :(得分:0)

通常在英语语法中,如果我们在句子中填写每个单词的第一个字母,那么我们将这些单词保留为小写字母

单词:and,in,the,of,a,

因此,在ruby的titlieze方法中,它只是确保忽略给定句子中的这些单词。所以下面的特定条件只是一个IF ELSE而没有别的

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

这意味着如果w(正在处理的单词)存在于忽略单词stop_words(和,in,the,of,a,an)的数组中,那么只需将它放在小的情况下,否则该单词的第一个字母为upcase