0
n = 4
n.between?(3,5) # => true
n.between?(5,3) # => false
如果.between?
方法在第三行返回true
會不會更方便?如果不是,爲什麼不呢?。間的不便之處?方法
編輯澄清
這裏是源代碼(原諒我,但C是不是我的母語)
static VALUE
cmp_between(VALUE x, VALUE min, VALUE max)
{
if (RTEST(cmp_lt(x, min))) return Qfalse;
if (RTEST(cmp_gt(x, max))) return Qfalse;
return Qtrue;
}
會是什麼負面影響(除了它可能打破很多現存的遺留代碼)如果這被改爲
static VALUE
cmp_between(VALUE x, VALUE y, VALUE z)
{
if (RTEST(cmp_lt(y, z))) {
y = min;
z = max; }
else {
z = min;
y = max; }
if (RTEST(cmp_lt(x, min))) return Qfalse;
if (RTEST(cmp_gt(x, max))) return Qfalse;
return Qtrue;
}
但紅寶石甚至不讀0和y作爲範圍 - 它在兩個不同的'<=>'運營商上運行一種'case ... when'。我想我的問題是一個有點哲學的問題。考慮到Ruby語言中所有令人驚訝的甜語法糖,使用'between?'方法自動排序兩個參數值的缺點是什麼? – pgblu 2014-11-01 22:15:45
我懷疑它不讀它的原因,因爲範圍實際上是爲了性能目的,因爲在某些情況下,範圍包含使用'succ'。比較''bbbbbb'。between?('a','zzzzzzzzzzz')(瞬時)到'('a'..'zzzzzzzzzzzz')。 'bbbbbb''(我的桌面需要幾秒鐘)。 – Max 2014-11-01 22:21:24