Ruby 给您带来的小小不便。在之间?方法

Ruby 给您带来的小小不便。在之间?方法,ruby,Ruby,如果.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, ma

如果
.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;
}

这背后的原因是数学上的。假设要检查某个对象是否在间隔[0,Y]内。从数学上讲,这只有在Y大于或等于0时才有意义。
之间的工作方式?
可以很容易地用

               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]和[Y,0]将被视为相同的(这会让数学家们感到困惑)。您需要两张支票:

n.between?(0, y)
但如果你根本不在乎数学家的感受,你可以很容易地让它独立于顺序:

y >= 0 and n.between?(0, y)

这背后的原因是数学上的。假设要检查某个对象是否在间隔[0,Y]内。从数学上讲,这只有在Y大于或等于0时才有意义。
之间的工作方式?
可以很容易地用

               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]和[Y,0]将被视为相同的(这会让数学家们感到困惑)。您需要两张支票:

n.between?(0, y)
但如果你根本不在乎数学家的感受,你可以很容易地让它独立于顺序:

y >= 0 and n.between?(0, y)

但是ruby甚至没有将0和y作为一个范围来读取——它在两个不同的
操作符上运行一种
情况。我想我的问题有点哲学性。考虑到Ruby语言中所有令人惊讶的甜蜜语法,让
between?
方法自动对两个参数值进行排序有什么缺点?我怀疑它不将其作为范围来读取的原因实际上是出于性能目的,因为在某些情况下,范围包含使用
succ
。比较('a','zzzzzzzzzz')
(瞬时)与('a'..'zzzzzzzzzz')之间的
'bbbbbbb'。包括吗bbbbbb’
(在我的桌面上需要几秒钟)。但是ruby甚至没有读取0和y作为一个范围-它在运行一种
案例…当
在两个不同的
操作符上运行时。我想我的问题有点哲学性。考虑到Ruby语言中所有令人惊讶的甜蜜语法,让
between?
方法自动对两个参数值进行排序有什么缺点?我怀疑它不将其作为范围来读取的原因实际上是出于性能目的,因为在某些情况下,范围包含使用
succ
。比较('a','zzzzzzzzzz')
(瞬时)与('a'..'zzzzzzzzzz')之间的
'bbbbbbb'。包括吗bbbbbb'
(在我的桌面上需要几秒钟)。