如果值为 0 则返回 1 以及如果值大于 0 则返回值的最佳方法是什么

yu-*_*der -1 ruby

据我们所知, 0 || 1 = 0

我想做(总是value >= 0

if value == 0 return 1
elsif value > 0 return value
Run Code Online (Sandbox Code Playgroud)

那么最好的方法是这个吗?

value = value > 0 ? value : 1

sim*_*nwo 5

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

[1, value].max
Run Code Online (Sandbox Code Playgroud)


Ste*_*fan 5

据我们所知, 0 || 1 = 0

将其0视为虚假使用nonzero?

value.nonzero? || 1
Run Code Online (Sandbox Code Playgroud)

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

  • @simonwo许多方法永远不会返回错误值,例如`to_i`总是返回一个整数,`to_s`总是返回一个字符串等等。但我同意这种情况很奇怪。如果我问_“值,你是非零吗?”_,我不期望_“五”_作为答案。IMO,“非零”(没有“?”)将是一个更好的方法名称。 (2认同)