수색…
비고
패턴 일치는 제공된 패턴에 따라 분기하는 프로세스입니다. 모든 패턴 일치는 switch 표현식 내에서 이루어지며 개별 case 표현식은 패턴을 나타냅니다.
패턴 일치의 기본 규칙은 다음과 같습니다.
- 패턴은 항상 위에서 아래로 매치됩니다.
- 입력 값과 일치하는 최상위 패턴은 표현식이 실행됩니다.
-
_패턴은 어떤 것과도 일치하므로case _:는default:.
가능한 모든 경우를 처리하는 경우, 캐치 - 모든 _ 패턴이나 default 케이스가 필요하지 않습니다.
열거 일치
다음 열거 형을 가정 해보십시오.
enum Operation {
Multiply(left : Int, right : Int);
}
열거 형 일치는 다음과 같이 수행 할 수 있습니다.
var result = switch(Multiply(1, 3)) {
case Multiply(_, 0):
0;
case Multiply(0, _):
0;
case Multiply(l, r):
l * r;
}
참고 문헌
구조 일치
다음 구조를 가정합니다.
var dog = {
name : "Woofer",
age : 7
};
열거 형 일치는 다음과 같이 수행 할 수 있습니다.
var message = switch(dog) {
case { name : "Woofer" }:
"I know you, Woofer!";
case _:
"I don't know you, sorry!";
}
참고 문헌
배열 일치
var result = switch([1, 6]) {
case [2, _]:
"0";
case [_, 6]:
"1";
case []:
"2";
case [_, _, _]:
"3";
case _:
"4";
}
참고 문헌
또는 패턴
| 연산자는 패턴 내에서 어디에서나 사용할 수있어 여러 허용 패턴을 나타냅니다. or- 패턴에 캡처 된 변수가있는 경우 두 하위 패턴 모두에 나타나야합니다.
var match = switch(7) {
case 4 | 1: "0";
case 6 | 7: "1";
case _: "2";
}
참고 문헌
근위 연대
가드를 사용하여 패턴을 더 제한 할 수도 있습니다. case ... if(condition): 구문에 의해 정의됩니다.
var myArray = [7, 6];
var s = switch(myArray) {
case [a, b] if (b > a):
b + ">" +a;
case [a, b]:
b + "<=" +a;
case _: "found something else";
}
참고 문헌
추출기
추출기는 extractorExpression => match 표현식에 의해 식별됩니다. 추출기는 두 부분으로 구성되며 => 연산자로 구분됩니다.
- 왼쪽은 모든 표현식이 될 수 있습니다. 여기서는
_가있는 모든_이_가 현재 일치하는 값으로 대체됩니다. - 오른쪽은 왼쪽의 평가 결과와 일치하는 패턴입니다.
오른쪽은 패턴이므로 다른 추출기를 포함 할 수 있습니다. 다음 예제는 두 추출기를 "연결"합니다.
static public function main() {
switch(3) {
case add(_, 1) => mul(_, 3) => a:
trace(a); // mul(add(3 + 1), 3)
}
}
static function add(i1:Int, i2:Int) {
return i1 + i2;
}
static function mul(i1:Int, i2:Int) {
return i1 * i2;
}
현재 or-patterns 내에서 추출기를 사용할 수 없습니다. 그러나 추출기의 오른쪽에 or 패턴이있을 수 있습니다.
참고 문헌
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow