我需要单位数量的支持。我希望类型系统尽可能地加强单元的正确性。例如,不可能将克与美元结合起来。我走的是参数化类型,但是这段代码似乎比我从别人那里看到的Scala代码重复得多。
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
最佳答案
我刚找到这篇文章
http://www.michaelnygard.com/blog/2009/05/units_of_measure_in_scala.html
希望能帮助到你。
关于scala - 在Scala中用单位表达数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/823848/