Intereting Posts
Kotlin + Dagger2: не может быть предоставлен без конструктора @Inject или из метода @ Provides- или @ Produces-annotated Как остановить службу уведомления на Android Oreo Элементы меню панели инструментов Android никогда не отображаются, но переходят в переполнение Как позволить котлинскому блоку вернуть пустоту? Kotlin: как передать последовательность (сопрограммы) как Iterable <T> Java ArrayList в Kotlin Array Как высмеять kotlin ByteArray с помощью Mockito? не удалось распечатать несколько булевых в Котлине Внешние аннотации Kotlin для JDK не заданы Функция Котлина с нулевым / ненулевым вводом, отображаемым на нулевой / ненулевой вывод Как сделать первичный ключ как автоинкремент для Room Persistence lib Как передать null в Observable с типом NULL в RxJava 2 и Kotlin Как скомпилировать код Kotlin-JS с сопрограммами? Не удается профилировать приложение Android в Android Studio Получение элементов из списка списков с помощью API Java Stream в Котлине

Kotlin mutableMap.put возвращает значение nullable

В стандартной версии kotlin мы имеем интерфейс MutableMap который имеет этот метод

 public abstract fun put(key: K, value: V): V? 

Почему он возвращает значение, равное нулю, если оно принимает значение, не имеющее значения NULL? Это сделано для java interop?

    Взгляните на определение

     /** * Associates the specified [value] with the specified [key] in the map. * * @return the previous value associated with the key, or `null` if the key was not present in the map. */ public fun put(key: K, value: V): V? 

    Так

     fun main(args: Array<String>) { var m: MutableMap<Int, String> = mutableMapOf(Pair(1, "a")) val prev1Value = m.put(1, "b") val prev2Value = m.put(2, "c") println(m) println("Previous value of 1 was: $prev1Value") println("Previous value of 2 was: $prev2Value") } 

    Печать:

     {1=b, 2=c} Previous value of 1 was: a Previous value of 2 was: null