2017-01-15 2 views
-3

В Скале, следующем общем типе,Scala ограничен общий типа против polymorphsim

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

сменно с полиморфным определением

def input(inp: SubType) = { } 

Когда мы должны отдавать предпочтение 1-й и 2-й стиля стиля? Любые сценарии?

+0

В данном конкретном случае это не имеет большого значения. –

ответ

0

Рассмотрим следующий метод:

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

Теперь точный тип inp будет сохранена в типе возвращаемого значения. В другом стиле у вас всегда будет Subtype как возвращаемый тип, а не что-то более конкретное.

Так что вам нужен первый стиль, если вам нужен доступ к наиболее точному типу inp, известному компилятору. Другой пример:

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