반응형
각 '언제'블록에 여러 값이있는 사례 설명
내가 찾고있는 것을 설명하는 가장 좋은 방법은 지금까지 시도한 실패한 코드를 보여주는 것입니다.
case car
when ['honda', 'acura'].include?(car)
# code
when 'toyota' || 'lexus'
# code
end
when
약 50 가지의 가능한 값으로 트리거되어야하는 약 4 ~ 5 가지 상황이 있습니다 car
. case
블록으로 이것을 수행하는 방법이 if
있습니까? 아니면 대규모 블록을 시도해야 합니까?
A의 case
문, a는 ,
것과 같습니다 ||
의 if
문.
case car
when 'toyota', 'lexus'
# code
end
루비의 "splat"또는 flattening 구문을 활용할 수 있습니다.
이것은 when
너무 잘 자란 절을 만듭니다 -당신이 올바르게 이해한다면 가지 당 테스트 할 약 10 개의 값이 있습니다-내 의견으로는 조금 더 읽을 수 있습니다. 또한 런타임시 테스트 할 값을 수정할 수 있습니다. 예를 들면 다음과 같습니다.
honda = ['honda', 'acura', 'civic', 'element', 'fit', ...]
toyota = ['toyota', 'lexus', 'tercel', 'rx', 'yaris', ...]
...
if include_concept_cars
honda += ['ev-ster', 'concept c', 'concept s', ...]
...
end
case car
when *toyota
# Do something for Toyota cars
when *honda
# Do something for Honda cars
...
end
또 다른 일반적인 방법은 해시를 디스패치 테이블로 사용하는 것입니다. 각 값의 키 car
와 실행하려는 코드를 캡슐화하는 호출 가능한 객체 인 값이 있습니다.
논리를 데이터에 넣는 또 다른 좋은 방법은 다음과 같습니다.
# Initialization.
CAR_TYPES = {
foo_type: ['honda', 'acura', 'mercedes'],
bar_type: ['toyota', 'lexus']
# More...
}
@type_for_name = {}
CAR_TYPES.each { |type, names| names.each { |name| @type_for_name[type] = name } }
case @type_for_name[car]
when :foo_type
# do foo things
when :bar_type
# do bar things
end
참고 URL : https://stackoverflow.com/questions/10197254/case-statement-with-multiple-values-in-each-when-block
반응형
'Programing' 카테고리의 다른 글
JavaScript에서 문자열에 특정 문자가 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.03.18 |
---|---|
.NET / C #을 통해 CPU 코어 수를 찾는 방법은 무엇입니까? (0) | 2020.03.18 |
Visual Studio 코드에서 모든 메서드 축소 (0) | 2020.03.18 |
창에서 git이 CR + LF 대신 LF를 사용하도록하려면 어떻게합니까? (0) | 2020.03.18 |
C #의 문을 사용하여 중첩 (0) | 2020.03.18 |