在Scala中有两个上限?

ste*_*nos 3 types scala

可能重复:
如何在Scala中设置多个类型边界?

我对Scala的类型系统有点困惑.我有类似的类型:

// ==== BASE CLASS
class Attribute {
    def name(): String
    def defaultVal(): Any
}

// ==== TRAIT - defines data type of an attribute
trait AttributeDataType[T] {
    def defaultVal(): T
}

trait TextAttr extends AttributeDataType[String] {
    def defaultVal() = ""
}

trait NumAttr extends AttributeDataType[Double] {
    def defaultVal() = 0.0   
}

// ==== CONCRETE ATTRIBUTES
class AgeAttribute extends Attribute with NumAttr {
    def name() = "Age"
}

class ColorAttribute extends Attribute with TextAttr {
    def name() = "Color"
}
Run Code Online (Sandbox Code Playgroud)

现在这应该工作:

object Main {

    def main(args:Array[String]) {
        Main.workOnNumAttr(new AgeAttribute) // SHOULD COMPILE
        //Main.workOnNumAttr(new ColorAttribute) // SHOULD NOT COMPILE
    }

    def workOnNumAttr[T <: [???] (attr: T) { // requires Attribute AND NumAttr
        println (attr.name)
        println (attr.defaultVal)
    }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢 ?

PS:基类和特征需要保持分离

Mar*_*ing 11

def workOnNumAttr[T <: Attribute with NumAttr] (attr: T) {
    println (attr.name)
    println (attr.defaultVal)
}
Run Code Online (Sandbox Code Playgroud)