Скажем, у меня есть карта:
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"])
В обоих случаях используются два поиска на карте, и они чрезвычайно уродливы и длинны.
Есть ли способ увеличить значение данного ключа, используя только один поиск?
Кроме того, может кто-нибудь объяснить, почему первые два метода не работают?
Kotlin
, но, посмотрев ваш код, я бы попробовал что-то вродеinventory["apples"] = ++inventory["apples"]!!
- person Sedrick   schedule 14.12.2018