Допустим, у меня есть карта:
var inventory = mutableMapOf("apples" to 1, "oranges" to 2)
, и я хочу увеличить количество яблок на единицу.
Однако это не работает:
inventory["apples"]!!++ // Error:(9, 4) Variable expected
Это также:
var apples = inventory["apples"]!!
++apples
println(inventory["apples"]) // prints "1" => the value was not incremented.
Что удивительно, поскольку в Kotlin числа заключены в квадрат, когда они хранятся в экземплярах универсальных объектов .Я не ожидал бы, что копия будет сделана.
Кажется, что единственный способ сделать что-то вроде:
var apples = inventory["apples"]!!
++apples
inventory["apples"] = apples
println(inventory["apples"])
, который использует два поиска на карте и очень уродливи длинный.
Есть ли способ увеличить значение данного ключа, используя только один поиск?
Кроме того, кто-то может объяснить, почему первые два метода не работают?