[ruby] 변수가 범위 내에 있는지 확인?

다음과 같은 루프를 작성해야합니다.

if i (1..10)
  do thing 1
elsif i (11..20)
  do thing 2
elsif i (21..30)
  do thing 3
etc...

그러나 지금까지 구문 측면에서 잘못된 길을 갔다.



답변

만약 사이에 있다면? (1, 10)
  일을 1
elsif i.between? (11,20)
  일을 2
...


답변

===연산자 (또는 그 동의어 include?)를 사용하십시오.

if (1..10) === i


답변

@Baldu가 말했듯이 === 연산자를 사용하거나 내부적으로 ===를 사용하는 유스 케이스 / 사용 :

case i
when 1..10
  # do thing 1
when 11..20
  # do thing 2
when 21..30
  # do thing 3
etc...


답변

여전히 범위를 사용하려면 …

def foo(x)
 if (1..10).include?(x)
   puts "1 to 10"
 elsif (11..20).include?(x)
   puts "11 to 20"
 end
end


답변

일반적으로 다음과 같은 기능으로 훨씬 더 나은 성능을 얻을 수 있습니다.

if i >= 21
  # do thing 3
elsif i >= 11
  # do thing 2
elsif i >= 1
  # do thing 1


답변

당신은 사용할 수 있습니다
if (1..10).cover? i then thing_1
elsif (11..20).cover? i then thing_2

과에 따라이 벤치 마크 빠른 루비 보다 더 빨리이다include?


답변

질문에 대한 직접적인 대답은 아니지만 “내부”와 반대되는 것을 원할 경우 :

(2..5).exclude?(7)

진실