Я читал о неявных преобразованиях, выполняемых между различными типами классов значений. Книга "Программирование в Scala" гласит:
[...] экземпляр класса scala.Int
автоматически расширяется (путем неявного преобразования) до экземпляра класса scala.Long
при необходимости.
(гл. 11.1 - Иерархия Скалы)
Что означает «требуемый» в этом случае? Как сделать это «видимым»? Я предположил:
scala> var i = Int.MaxValue
i: Int = 2147483647
Я ожидал i: Long = 2147483648
, если я добавлю 1.
scala> i = i + 1
i: Int = -2147483648
Я не ожидал увидеть переполнение.