Ruby条件赋值

时间:2015-11-18 19:15:03

标签: ruby

如果a优于b,那么将变量a分配给另一个变量b的Ruby方法是什么?

到目前为止,我有三种可能性:

  • if a > b then a = b end
  • a = b if a > b
  • a = a > b ? b : a

更广泛地说,有没有办法为变量设置上限? 例如:如果我尝试设置a = 50且a的上限为25,则在分配后a将等于25。

4 个答案:

答案 0 :(得分:5)

所以你要求上限:

UPPER_LIMIT = 25
b = 100
a = [b, UPPER_LIMIT].min

a将始终小于或等于25

答案 1 :(得分:5)

所有三个选项都有效,这只是一个风格问题。

我会选择2号。它最明确地传达了您的意图,同时避免了无关的关键字(数字1)或过度简化一个衬垫(数字3)。

在回答更一般的问题时,无法在Ruby中覆盖变量赋值。您可以使用setter方法覆盖实例变量的赋值。如果您只是想在后面这样做,那么您问题中的代码就足够了:

a = something
a = 25 if a > 25

答案 2 :(得分:2)

a > b && a = b

怎么样?

其中b是上限。

b = 25
a = 25
a > b && a = b #> false; a = 25
a = 26 
a > b && a = b #> true; a = 25

答案 3 :(得分:1)

尝试:b = a > b ? a : b

与写作相同:

if a > b
  b = a
else
  b = b
end