Scala Language
취급 단위 (조치)
수색…
통사론
- 클래스 측정기 (val meters : Double) AnyVal을 확장합니다.
- 타입 미터 = 더블
비고
단위에 가치 클래스를 사용하거나 유닛에 전용 라이브러리를 사용하는 것이 좋습니다.
별칭 유형
type Meter = Double
이 간단한 접근법은 Double
모든 다른 유형이이 유형과 호환되므로 단위 처리에 심각한 단점이 있습니다.
type Second = Double
var length: Meter = 3
val duration: Second = 1
length = duration
length = 0d
위의 모든 내용이 컴파일되므로이 경우 단위는 코드 판독기의 입력 / 출력 유형 (의도 만 표시)에만 사용할 수 있습니다.
가치 클래스
case class Meter(meters: Double) extends AnyVal
case class Gram(grams: Double) extends AnyVal
값 클래스는 유니 코드를 사용하는 데 더 많은 문자가 필요한 경우에도 단위를 인코딩 할 수있는 유형 안전 방법을 제공합니다.
var length = Meter(3)
var weight = Gram(4)
//length = weight //type mismatch; found : Gram required: Meter
AnyVal
을 확장하면 JVM 수준에서 런타임 사용 불이익이 없으며 기본 유형 (이 경우 Double
)입니다.
다른 단위 (예 : Velocity
aka MeterPerSecond
)를 자동으로 생성하려는 경우이 방법을 사용할 수도있는 라이브러리가 있지만이 방법이 최선이 아닙니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow