在scala中,以下泛型类型
def input[T <: SubType](inp: T) = { }
可以用多态定义替换
def input(inp: SubType) = { }
我们什么时候应该选择第一种风格和第二种风格?任何情况?
答案 0 :(得分:0)
考虑以下方法:
def input[T <: SubType](inp: T): T = ???
现在,inp
的精确类型将保留在返回类型中。在另一种风格中,您总是将Subtype
作为返回类型,而不是更具体的类型。
因此,如果您需要访问编译器已知的最精确类型的inp
,那么基本上您需要第一种样式。
另一个例子:
def input[T <: SubType : SomeTypeclass](inp: T) = ???