단위가있는 수량에 대한 지원이 필요합니다. 유형 시스템이 단위 정확성을 가능한 한 많이 시행하기를 바랍니다. 예를 들어, 그램을 달러와 결합 할 수 없어야합니다. 매개 변수화 된 형식의 경로를 따라갈 것이지만이 코드는 다른 사람들에게서 본 스칼라 코드보다 훨씬 반복적 인 것처럼 보입니다.단위가 스칼라로 멋지게 표현됩니다.
abstract class UnitOfMeasure
abstract class Range[T] {
type T <: UnitOfMeasure
}
class Quantity[T <: UnitOfMeasure](value: Double)
class DefiniteRange[T<:UnitOfMeasure](lowerBound: Quantity[T], upperBound: Quantity[T]) extends Range[T]
class Confidence(conf: Double) {
require(0.0 <= conf && conf <= 1.0)
}
class ConfidenceInterval[T<:UnitOfMeasure](lowerBound: Quantity[T], upperBound: Quantity[T], confidence: Confidence) extends Range[T] {
def this(lower: Quantity[T], upper: Quantity[T]) = this(lower, upper, new Confidence(.90))
}
더 깨끗한 방법이 있습니까? "T < : UnitOfMeasure"의 드럼 비트는 저를 괴롭히는 주요 원인입니다.
호환되는 음식이있는 기본 유형의 동물과 다른 유형의 음식 만 먹을 수있는 하위 유형이있는 스칼라 프로그래밍 책의 사례를 보면 알 수 있습니다. 나는 그것이 관련되어있는 것처럼 느낀다. 그러나 나는 확실하지 않다. 어쩌면 책이있는 누군가가 좋은 덩어리를 애타게 할 수 있습니다. 솔루션의 요점은이 분산 주석 대신 모든 기본 클래스의 유형 멤버를 사용하는 것입니다. – rndmcnlly
mdmnclly, 정확히 올바른 포인터였습니다. 고맙습니다! 내가 upvote 수 있도록 답변으로 의견을 게시하십시오. – mtnygard
+1. 나의 빚은 갚아진다. – akarnokd