글쎄, 그 방법 spec'ed 때문에, 나는 생각합니다.
튜플 지정은 패턴 일치의 예입니다. 마지막 예를 들어, case
를 사용하여 하나를 수행, 지금
val l = List((1,'a'), (2,'b'), (3,'c'))
var (n, c) = l(0)
for ((n, c) <- l) println(n+": "+c)
l(1) match {
case (n, c) => println(n+": "+c)
}
:
var PATTERN = ... // or val
for (PATTERN <- ...) ...
case PATTERN => ...
그래서이 모든 경우 작동 : 패턴 매칭은 내가 리콜 세 곳에서 발생합니다. 이 예에서
n
및
c
은
이 아니고이 아니며 조금 더 일찍 정의 된
n
및
c
입니다. 패턴 일치는
새 값인 식별자
n
및
c
에 할당되며, 이는
case
문의 escope에 대한 이전 정의를 무시합니다. 동일한 예가
for
예에서 발생했으며, 이전에 정의한
n
및
c
은 변경되지 않았습니다.
이제 새 식별자에 새 값을 할당하는 대신 이전 값을 덮어 쓰게됩니다. 그것이 패턴 매칭이 작동하는 방식이 아니며, 이는 패턴 일치가 완전히 새로운 규칙을 수반한다는 것을 의미합니다. 스칼라가 사람을 불변성으로 부드럽게 뿌리 내 렸기 때문에 이것을 처리하기위한 새로운 규칙을 만들지 않은 것이 무리가 아니라고 봅니다.
티켓은 https://issues.scala-lang.org/browse/SI-1324입니다 ("SIP가 필요합니다"). –