[SCALA] 튜플 매개 변수 선언과 할당 기이
SCALA튜플 매개 변수 선언과 할당 기이
다음과 같이 나는 튜플을 할당 할 수 있습니다 :
var (min, max) = (1, 2)
다음과 같이 그러나 나는 다음을 다시 할당 할 수 없습니다
(min, max) = (1, 3) //compiler error: ';' expected but '=' found
대신에 내가해야 할 것 같다 :
min = 1
max = 3
이전하지 않는 반면, 왜 후자 작동합니까?
해결법
-
==============================
1.그것은 그런 식으로 spec'ed 때문에 글쎄, 나는 가정한다.
그것은 그런 식으로 spec'ed 때문에 글쎄, 나는 가정한다.
이것은 튜플 할당 패턴 매칭의 한 예이다. 패턴 매칭은 필자가 기억하는 것이 세 곳에서 일어나는 :
var PATTERN = ... // or val for (PATTERN <- ...) ... case PATTERN => ...
그래서이 모든 경우 작동 :
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) }
이제 케이스를 사용하여 하나를 마지막으로 예를 들자면. 참고 N 및 그 실시 예에서 C가 약간 앞에서 정의한 동일한 N 및 C 아니다. 패턴 일치는 케이스 문의 escope의 이전 정의를 그림자하는 새로운 식별자 N과 C에 값을 할당합니다. N 변경하고 C하지 않았다 예를 들어에 무슨 일이 있었 같은 일이, 이전에 정의.
자, 오류가 발생하는 대신 새로운 식별자 할당 새 값의 이전 값을 덮어 쓸 것입니다. 그건하지 어떻게 패턴 매칭 작업, 어떤 수단이 완전히 새로운 규칙을 수반 발생하고. 스칼라 부드럽게 불변성으로 사람을 PRODS 때문에, 나는 그들은 단지이 문제를 처리하기 위해 새로운 규칙을 작성하지 않은 무리한 아니다 가정합니다.
from https://stackoverflow.com/questions/1624484/tuple-parameter-declaration-and-assignment-oddity by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] JSObject를 어떠한 JSON 시리얼 타입 play.api.libs.json.JsObject에 대한 발견 (0) | 2019.11.07 |
---|---|
[SCALA] unionAll을 여러 dataframes 불꽃 (0) | 2019.11.07 |
[SCALA] 예외 : ZLIB 입력 스트림의 예기치 않은 종료 (0) | 2019.11.07 |
[SCALA] 볼품에 반복적으로 이기종 목록에 케이스 클래스를 변환하려고 이상한 행동 (0) | 2019.11.07 |
[SCALA] 어떻게 디스크에 CSV로 스파크 DataFrame을 저장? (0) | 2019.11.07 |