如果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。
答案 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