5
これら2つの単純なインターバルクラスのボイラープレート排除スーパークラスを定義するにはどうすればよいですか?スカラ実間隔、Int間隔
class IntInterval(val from: Int, val to: Int) {
def mid: Double = (from+to)/2.0
def union(other: IntInterval) = IntInterval(from min other.from, to max other.to)
}
class DoubleInterval(val from: Double, val to: Double) {
def mid: Double = (from+to)/2.0
def union(other: DoubleInterval) = DoubleInterval(from min other.from, to max other.to)
}
私は
class Interval[T <: Number[T]] (val from: T, val to: T) {
def mid: Double = (from.doubleValue+to.doubleValue)/2.0
def union(other: IntInterval) = Interval(from min other.from, to max other.to)
}
を試みたが、(数[T]が最小/最大を持っていないので)分と最大は組合方法ではコンパイルできませんでした。
はあなたが半ばと組合端正で方法の両方を扱うエレガントなスーパークラスを提供することができ、定型回避方法コード-once-and-only-onceの?
Mhhh。 2.9.2で確認しましたが、問題はありませんでした。あなたのエラーメッセージは何ですか? (あなたは 'num num ...'を忘れましたか?) – soc
ありがとうございました!それは完璧に働いた。 –