我想实现一个类C来存储各种数值类型的值,以及布尔值.此外,我想能够在这个类的实例操作,类型之间,转换在必要Int --> Double和Boolean -> Int,即,能够添加Boolean + Boolean,Int + Boolean,Boolean + Int,Int + Double,Double + Double等等,返回最小的可能类型(Int或Double可能的),只要.
到目前为止,我想出了这个:
abstract class SemiGroup[A] { def add(x:A, y:A):A }
class C[A] (val n:A) (implicit val s:SemiGroup[A]) {
def +[T <% A](that:C[T]) = s.add(this.n, that.n)
}
object Test extends Application {
implicit object IntSemiGroup extends SemiGroup[Int] {
def add(x: Int, y: Int):Int = x + y …Run Code Online (Sandbox Code Playgroud)