Согласно спецификации языка Scala :
... логический вывод локального типа разрешен для ограничения сложности предполагаемых границ [параметров типа]. Минимальность и максимальность типов следует понимать относительно множества типов приемлемой сложности.
На практике каковы ограничения?
Кроме того, существуют ли другие ограничения, которые применяются к предполагаемым типам выражений, чем к границам типов параметров, и каковы эти ограничения?
scala
type-inference
Оуэн
источник
источник
Ответы:
При выводе типов компилятору часто требуется вычислить наименьшую верхнюю границу (LUB) списка типов. Например, тип
if (cond) e1 else e1
- это LUB из типовe1
иe1
.Эти типы могут быть довольно большими, например, попробуйте это в REPL:
Этот коммит ввел некоторые проверки работоспособности, чтобы ограничить глубину таких предполагаемых типов.
Недавно была проделана некоторая работа по надстройке над процессом компиляции для обнаружения предполагаемых типов, вычисление которых занимает много времени, и предложения мест, где явная аннотация типа может быть целесообразной.
источник