Ruby - 是否可以在过程中使用三元运算符?

Ruby - Is it possible to use a ternary operator in a proc?

我正在学习 TestFirst.org 的 Ruby 课程,并且我 运行 遇到了一个编码挑战,需要我构建一个方法 "titleize" 来大写每个字符串中除 'little words'.

之外的单词

下面的代码解决了这个问题。

def titleize(words)
  little_words = %w[a an the and but or for nor on at to from by over]

  capitalizer = Proc.new do |word|
    if little_words.include? word
      word
    else
      word.capitalize
    end
  end

  words.split.map(&capitalizer)*' '
end

我最初尝试使用以下过程。

capitalizer = Proc.new { |word| little_words.include? word ? word : word.capitalize }

但是,此过程仅返回真值。真值来自被测试的 word 是否包含在 little_words 数组中。这让我相信 proc 甚至在计算问号右侧的代码之前就已经返回了。

我阅读了有关 procs 和三元运算符的 Ruby 文档,但我找不到关于两者是否可以一起使用的任何信息。

我在 Stack Overflow 中搜索 "proc ruby ternary" 并通读了在我开始 post 这个问题时弹出的类似问题。我在那里也找不到任何东西。

所以,我来找你们,Stack Overflow 的天才们。我有一个问题。

在Ruby中,可以在过程中使用三元运算符吗?

(如果是这样,为什么我的小程序不起作用?)

尝试:

capitalizer = Proc.new { |word| little_words.include?(word) ? word : word.capitalize }

应该可以。