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
범위를 포함하는 것은'succ'를 사용하기 때문에 어떤 경우에는 성능상의 이유로 실제로 범위를 읽지 못하는 것으로 의심됩니다. ? ('a', 'zzzzzzzzzzzz')'(순간적)에서'('a'.. 'zzzzzzzzzzzz') 사이의''bbbbbb ' 'bbbbbb'' (내 바탕 화면에서 몇 초 걸립니다). – Max