Scala限制泛型类型与polymorphsim

时间:2017-01-15 14:51:20

标签: scala generics polymorphism

在scala中,以下泛型类型

def input[T <: SubType](inp: T) = { }

可以用多态定义替换

def input(inp: SubType) = { }

我们什么时候应该选择第一种风格和第二种风格?任何情况?

1 个答案:

答案 0 :(得分:0)

考虑以下方法:

def input[T <: SubType](inp: T): T = ???

现在,inp的精确类型将保留在返回类型中。在另一种风格中,您总是将Subtype作为返回类型,而不是更具体的类型。

因此,如果您需要访问编译器已知的最精确类型的inp,那么基本上您需要第一种样式。 另一个例子:

def input[T <: SubType : SomeTypeclass](inp: T) = ???