[SCALA] 어떻게 | 패턴 매칭 작품 (파이프)?
SCALA어떻게 | 패턴 매칭 작품 (파이프)?
당신은 쓸 수 있습니다:
str match { case "foo" | "bar" => ... }
| 얼핏보기에 그것은처럼 보인다 그러나, 추출 객체가 될 수있다 :
str match { case |("foo", "bar") => ... }
작동하지 않습니다. (그리고 나는 어쨌든 구현 될 수있는 방법을 볼 수 없습니다.)
그래서 내장 연산자 마법은?
(... 내가 SO 이전에이 질문을 보았다 생각하지만, 그것은 검색 불가능)
해결법
-
==============================
1.예 파이프 (|)는 내장 된 패턴 매칭 (스칼라 언어 참조 참조). 패턴 매칭 섹션 (섹션 8) 패턴 대안을 소위 섹션 8.1.11에 정의합니다. 정의는 말한다 :
예 파이프 (|)는 내장 된 패턴 매칭 (스칼라 언어 참조 참조). 패턴 매칭 섹션 (섹션 8) 패턴 대안을 소위 섹션 8.1.11에 정의합니다. 정의는 말한다 :
그래서 그래, 파이프가 내장 그 패턴 매칭에 민감한 상황입니다.
-
==============================
2.| 라이브러리에 구현되지 않은, 그것은 스칼라 컴파일러에 의해 해석됩니다. 즉, 당신은 같은 물건을 쓸 수 있습니다, 그것은 새로 형성된 패턴 자체가 바인딩 될 수 있지만 (모든 변수를 결합하지 않는 두 개의 서브 패턴 사이의 분리로 정의 된 새로운 패턴을 구축
| 라이브러리에 구현되지 않은, 그것은 스칼라 컴파일러에 의해 해석됩니다. 즉, 당신은 같은 물건을 쓸 수 있습니다, 그것은 새로 형성된 패턴 자체가 바인딩 될 수 있지만 (모든 변수를 결합하지 않는 두 개의 서브 패턴 사이의 분리로 정의 된 새로운 패턴을 구축
try { /*...*/ } catch { case e @ (_: IOException | _: IllegalArgumentException) => /*...*/ }
및 e)는 열거 된 대안의 대부분 특정의 슈퍼 유형으로 가져옵니다.
from https://stackoverflow.com/questions/6484137/how-does-pipe-in-pattern-matching-work by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] java.util.concurrent.Future에 대한 scala.concurrent.Future 래퍼 (0) | 2019.11.22 |
---|---|
[SCALA] scalac 컴파일 수익률은 "개체의 아파치 패키지 조직의 구성원이 아닌" (0) | 2019.11.22 |
[SCALA] java.lang.NoSuchMethodError : scala.Predef $ .refArrayOps (0) | 2019.11.22 |
[SCALA] 스칼라 - 하나의 목록으로 목록의 변환 목록 : 목록 [목록 [A] 목록 [A]에 (0) | 2019.11.22 |
[SCALA] 어떻게 스칼라에서 테스트 리소스에 액세스하려면? (0) | 2019.11.22 |