很抱歉,如果已经涵盖了这一点。下面的动态类型和类型边界的简单示例不适用于字符串列表,但与包含已定义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)
答案 0 :(得分:2)
这有效:
def sumlen[T <: {def length() : Int}](l : List[T]) : Int = {
// ^^
是的,这是一个功能,而不是一个错误。