Ruby 如果值为0,则返回1,如果值大于0,则返回值的最佳方式是什么

Ruby 如果值为0,则返回1,如果值大于0,则返回值的最佳方式是什么,ruby,Ruby,正如我们所知,0 | | 1=0 if value == 0 return 1 elsif value > 0 return value 我想做(总是值>=0) 那么最好的办法是什么呢 value=value>0?值:1假设您只处理正数,为什么不: [1, value].max 正如我们所知,0 | | 1=0 if value == 0 return 1 elsif value > 0 return value 要将0视为错误使用: 如果value为0,则上面返回1,否则返回

正如我们所知,
0 | | 1=0

if value == 0 return 1
elsif value > 0 return value
我想做(总是
值>=0

那么最好的办法是什么呢


value=value>0?值:1

假设您只处理正数,为什么不:

[1, value].max
正如我们所知,
0 | | 1=0

if value == 0 return 1
elsif value > 0 return value
要将
0
视为错误使用:


如果
value
为0,则上面返回
1
,否则返回
value

与此无关,这是您的问题。由于您只是重新分配给
,因此您需要执行一个额外的分配;在此上下文中,最好的方法是
value=1 if value.zero?
但这是一个主观的答案(这是“什么是最好的”问题通常会出现的情况),因此问题可能会被关闭。是否要进一步缩短语法?或者类似ruby的方式?如果值小于0,预期结果是什么?@codermouse:如果
value
nil
,您想要什么?值将始终>=0I,就像这样,特别是它也适用于负数。我对
非零?
返回值而不是布尔值的事实有点困惑。问号方法最好被认为是返回真值或假值,而不是特别地
true
false
@3limin4t0r,那么,像所有方法一样?@simon有两种方法永远不会返回假值,例如,
to_i
始终返回一个整数,
to_s
始终返回一个字符串,依此类推。但我同意这种情况很奇怪。如果我问“值,你不是零吗?”,我不希望回答“五”。依我看,
非零
(没有
)将是一个更好的方法名称。