반응형
    
    
    
  변수가 범위 내에 있는지 확인?
다음과 같은 루프를 작성해야합니다.
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)
진실
루비로 빌드 할 수있는보다 역동적 인 답변 :
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으로 묶여 있습니다.
문자열의 경우 :
(["GRACE", "WEEKLY", "DAILY5"]).include?("GRACE")
#=>true
참고URL : https://stackoverflow.com/questions/870507/determining-if-a-variable-is-within-range
반응형
    
    
    
  'programing tip' 카테고리의 다른 글
| 날짜별로 ArrayList의 객체를 정렬 하시겠습니까? (0) | 2020.06.30 | 
|---|---|
| EditText의 포커스를 처리하는 이벤트 (0) | 2020.06.30 | 
| SQLAlchemy 기본 DateTime (0) | 2020.06.30 | 
| Android : android.content.res.Resources $ NotFoundException : 문자열 리소스 ID # 0x5 (0) | 2020.06.30 | 
| jQuery를 사용하여 자식 요소를 부모에서 다른 부모 요소로 옮기는 방법 (0) | 2020.06.30 |