Выбор ответа Junior Задачи на Kotlin обновлено
Сравнение Long с литералом
Вопрос
Почему не компилируется val sum: Long = 0; if (sum == 0) println("zero")?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: == между Long и Int запрещён: нужно 0L. В Kotlin нет неявного расширения чисел, и == между Long и Int запрещён компилятором.
Варианты ответа
Longнельзя сравнивать через==, толькоcompareTo- Переменная
sumдолжна бытьvar, а неval ==междуLongиIntзапрещён: нужно0Lправильный ответ- Нужно писать
sum.equals(0),==не работает
Разбор
В Kotlin нет неявного расширения чисел, и == между Long и Int запрещён компилятором. Литерал нужно сделать Long: 0L. Объявление val sum: Long = 0 при этом законно, литерал сразу получает тип Long. sum.equals(0) скомпилируется, но вернёт false, потому что Long и Integer разные классы.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.