Scala 游程

多态方法

语言

Scala 中的方法可以按类型和值进行参数化。语法类似于泛型类。类型参数用方括号括起来,而值参数用圆括号括起来。

这里有一个示例

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)
def listOfDuplicates[A](x: A, length: Int): List[A] =
  if length < 1 then
    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 和值参数 xlength。值 x 的类型为 A。如果 length < 1,则返回一个空列表。否则,我们将 x 添加到递归调用返回的重复项列表中。(请注意,:: 表示在右侧列表的左侧添加一个元素。)

在第一个示例调用中,我们通过编写 [Int] 显式地提供了类型参数。因此第一个参数必须是 Int,而返回类型将是 List[Int]

第二个示例调用表明,你不总是需要显式地提供类型参数。编译器通常可以根据上下文或值参数的类型来推断它。在此示例中,"La"String,因此编译器知道 A 必须是 String

此页面的贡献者