Scala动态类型,类型边界和java对象 - 这是预期的行为还是错误?

时间:2011-04-05 16:58:12

标签: scala-2.8

很抱歉,如果已经涵盖了这一点。下面的动态类型和类型边界的简单示例不适用于字符串列表,但与包含已定义length()函数的(scala)类完美配合。这是预期的行为还是一个错误?如果它是预期的行为,是否有办法定义类型绑定,以便它可以用于String对象列表以及具有长度的任意scala对象列表(0函数?

def sumlen[T <: {def length : Int}](l : List[T]) : Int = {
     def sl(l : List[T], acc : Int) : Int = l match {
         case Nil => acc
         case h::t => sl(t, h.length + acc)
     }
     sl(l, 0)
}

val l1 = List("This", "is", "a", "test")

sumlen(l1) 

1 个答案:

答案 0 :(得分:2)

这有效:

def sumlen[T <: {def length() : Int}](l : List[T]) : Int = {
//                         ^^

是的,这是一个功能,而不是一个错误。