답변:
만약 사이에 있다면? (1, 10) 일을 1 elsif i.between? (11,20) 일을 2 ...
i.between?(1..10)
작동하지 않습니다 (있는 경우 ..
) 그 이유가 있어야한다고 생각합니다.
3.between?(1, 3) => true
===
연산자 (또는 그 동의어 include?
)를 사용하십시오.
if (1..10) === i
i
(같은 수보다 뭔가 다른 인 nil
)
if i === (1..10)
이 작동하지 않습니다
(1..10000000000000000)
배열이 아닙니다. (1..10000000000000000) === 5000000000000000
단지 후드 테스트 "사이의"를하고있다
당신은 사용할 수 있습니다
if (1..10).cover? i then thing_1
elsif (11..20).cover? i then thing_2
과에 따라이 벤치 마크 빠른 루비 보다 더 빨리이다include?
Ruby에서 빌드 할 수있는보다 역동적 인 답변 :
def select_f_from(collection, point)
collection.each do |cutoff, f|
if point <= cutoff
return f
end
end
return nil
end
def foo(x)
collection = [ [ 0, nil ],
[ 10, lambda { puts "doing thing 1"} ],
[ 20, lambda { puts "doing thing 2"} ],
[ 30, lambda { puts "doing thing 3"} ],
[ 40, nil ] ]
f = select_f_from(collection, x)
f.call if f
end
따라서이 경우 "범위"는 경계 조건을 포착하기 위해 실제로는 0으로 묶여 있습니다.
Date
하고DateTime
있는 동안 개체를===
하지 않습니다.