【发布时间】:2013-05-06 20:29:00
【问题描述】:
考虑这段代码:
values = ["one", "two", "", "four"]
values.each do |value|
puts value.empty? ? "emptyness" : "#{value} is #{value.length}"
end
在 Ruby 1.8.7 中是否可以格式化缩进操作数的三元运算符?比如:
puts value.empty?
? "emptyness"
: "#{value} is #{value.length}"
但是这个显然行不通。
【问题讨论】:
-
一般来说,你应该只对非常短的表达式使用三元运算符。如果您觉得需要使用多行代码,最好使用完整的
if [...] else [...] end以使其更具可读性和明确性。 -
如果您使用三元运算符,我不同意它应该放在一条线上。您使用的临时变量越少越好。您的代码将以从左到右的方式更具可读性,而不必再往下查找为什么要执行所有中间条件逻辑。
标签: ruby whitespace ternary-operator