[SCALA] 스칼라의 경로에 의존하는 유형은 무엇을 의미합니까?
SCALA스칼라의 경로에 의존하는 유형은 무엇을 의미합니까?
나는 스칼라 경로에 의존하는 유형이 들었습니다. 그것은 내부 - 클래스와 함께 할 수있는 뭔가하지만 무엇을이 실제로 의미와 왜 상관이야?
해결법
-
==============================
1.내가 제일 좋아하는 예 :
내가 제일 좋아하는 예 :
case class Board(length: Int, height: Int) { case class Coordinate(x: Int, y: Int) { require(0 <= x && x < length && 0 <= y && y < height) } val occupied = scala.collection.mutable.Set[Coordinate]() } val b1 = Board(20, 20) val b2 = Board(30, 30) val c1 = b1.Coordinate(15, 15) val c2 = b2.Coordinate(25, 25) b1.occupied += c1 b2.occupied += c2 // Next line doesn't compile b1.occupied += c2
따라서, 좌표의 유형은 인스턴스화되는 보드의 인스턴스에 따라 달라집니다. 가치와 혼자가 종류에 따라 달라집니다 형 안전 일종의을주는이 달성 할 수있는 일의 모든 종류가 있습니다.
이 종속 유형처럼 들릴 수도 있지만, 더 제한됩니다. 예를 들어, 점유의 종류는 보드의 값에 따라 달라집니다. C2의 유형 b2.Coordinate 때문에의 점유 형태는 [b1.Coordinate] 설정하는 동안 위, 마지막 줄은 작동하지 않습니다. 하나 B1 같은 다른 유형의 식별자를 사용할 수 있음을 유의 그래서 유형과 연관된 식별자 B1 아니다. 예를 들어, 작품을 다음과 같은 :
val b3: b1.type = b1 val c3 = b3.Coordinate(10, 10) b1.occupied += c3
from https://stackoverflow.com/questions/2693067/what-is-meant-by-scalas-path-dependent-types by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 클래스 옵션 [T]의 점은 무엇입니까? (0) | 2019.11.01 |
---|---|
[SCALA] 스칼라의 타입 클래스는 유용 무엇입니까? (0) | 2019.11.01 |
[SCALA] Akka위한 좋은 유스 케이스 [폐쇄] (0) | 2019.11.01 |
[SCALA] 스칼라 스파크, listbuffer가 비어 있습니다 (0) | 2019.11.01 |
[SCALA] 왜 스파크 코드는 NullPointerException이 만드는가? (0) | 2019.10.31 |