私はこの厄介な問題に、エレガントな解決策を見つけることなくしばらく苦労してきました。
私がそのようなクラス階層を持っているとしましょう:
class StatWithBounds[A](val min: A, val max: A, val currentValue: A)
class StatBetween0And20(initialValue: Int) extends StatWithBounds[Int](0, 20, initialValue)
class PositiveStatOnly(initialValue: Int) extends StatWithBounds[Int](0, Integer.MAX_VALUE, initialValue)
class UncappedPercentage(initialValue: Int) extends StatWithBounds[Int](0, Integer.MAX_VALUE, initialValue)
initialValueのコピー/貼り付けは非常に冗長です。さらに、私がこのようなことをしたい場合:
class Strength(initialValue: Int) extends StatBetween0And20(initialValue)
class Intelligence(initialValue: Int) extends StatBetween0And20(initialValue)
class Piety(initialValue: Int) extends StatBetween0And20(initialValue)
なんとコピー/貼り付けの地獄(そして私がさらに10個のサブクラスを持っていると想像してください)!
この雑然とした問題を解決するためのエレガントな方法はありますか?