Неявные преобразования для типов классов значений? - PullRequest
3 голосов
/ 12 ноября 2010

Я читал о неявных преобразованиях, выполняемых между различными типами классов значений. Книга "Программирование в 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

Я не ожидал увидеть переполнение.

1 Ответ

6 голосов
/ 12 ноября 2010

«Обязательный» означает метод, который принимает Long, передавая Int и все такое.

Int.+ не требует Long. По большей части Ints ведут себя так же, как и примитивный целочисленный тип Java.

...