Scala之旅-多态方法

Scala之旅-多态方法

多态方法(Polymorphic Methods)

Scala中的方法可以通过类型参数化,通过值(value)同样可以。语法和泛型类是类似的。类型参数在一对方括号中声明,而值参数是放在一对圆括号中。

下面是一个例子:

def listOfDuplicates[A](x: A, length: Int): List[A] = {
    if (length < 1)
        Nil
    else
        x :: listOfDuplicates(x, length - 1)
}
println(listOfDuplicates[Int](3, 4))  // List(3, 3, 3, 3)
println(listOfDuplicates("La", 8))  // List(La, La, La, La, La, La, La, La)

方法listOfDuplicates带有一个类型参数A以及值参数x和length。在这个例子中,值x的类型是A。如果length < 1则返回一个空列表。否则就将x放在递归调用listOfDuplicates返回的列表前面。(注:操作符::的意思是将一个元素放在一个序列的前面)。

当我们用[Int]作为类型参数调用listOfDuplicates时,第一个参数必须是一个int,并且返回类型是List[Int]。然而,你并不总是需要显示地提供这个类型参数,因为编译器经常能够通过值参数的类型推断出来(”La”是一个String)。事实上,如果从Java调用这个方法是不可能提供这个类型参数的。

参考资料

本文译自Tour Of Scala – Polymorphic Methods

上一篇:Scala之旅-隐式转换

下一篇:Scala入门-本地类型推断(Local Type Inference)

发表评论

电子邮件地址不会被公开。 必填项已用*标注