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 }
应该可以。
我正在学习 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 }
应该可以。