Size: a a a

2018 December 14

DS

Dmitriy Shishmakov in Kotlin JVM
всем привет
источник

DS

Dmitriy Shishmakov in Kotlin JVM
public operator fun <T> Collection<T>.plus(element: T): List<T> {
   val result = ArrayList<T>(size + 1)
   result.addAll(this)
   result.add(element)
   return result
}
источник

DS

Dmitriy Shishmakov in Kotlin JVM
это что же, все коллекции заново копируются?
источник

BP

Bogdan Panchenko in Kotlin JVM
Dmitriy Shishmakov
это что же, все коллекции заново копируются?
Да, она иммутабельна, Collection
источник

BP

Bogdan Panchenko in Kotlin JVM
Если нужно добавлять то есть мутабельные
источник

QH

Quantum Harmonizer in Kotlin JVM
Bogdan Panchenko
Да, она иммутабельна, Collection
будем честны, мы просто не знаем, мутабельная ли она)
источник

QH

Quantum Harmonizer in Kotlin JVM
для мутабельных должен быть +=
источник

AE

Alexandr Emelyanov in Kotlin JVM
Dmitriy Shishmakov
public operator fun <T> Collection<T>.plus(element: T): List<T> {
   val result = ArrayList<T>(size + 1)
   result.addAll(this)
   result.add(element)
   return result
}
ну как бы a + b - как бы говорит сделай новое из двух, при этом не известно будет ли присвоение переменной a результата, а a+=b - говорит добавь в a
источник

QH

Quantum Harmonizer in Kotlin JVM
> при этом не известно будет ли присвоение переменной a результата

дока явно говорит — не мутируйте ресивер!
источник

AE

Alexandr Emelyanov in Kotlin JVM
ну и я том же
источник

AE

Alexandr Emelyanov in Kotlin JVM
при этом += определен только для mutableCollection
источник

U

Unat in Kotlin JVM
Alexandr Emelyanov
при этом += определен только для mutableCollection
для иммутабельных тоже
источник

U

Unat in Kotlin JVM
но там он возвращает новый список
источник

AE

Alexandr Emelyanov in Kotlin JVM
нет
источник

AE

Alexandr Emelyanov in Kotlin JVM
plusAssign нет для Collection
источник

U

Unat in Kotlin JVM
тем не менее, += на иммутабельную коллекцию вызывает plus и присваивание
источник

U

Unat in Kotlin JVM
источник

AE

Alexandr Emelyanov in Kotlin JVM
а, загнался, не обратил внимание на то, что у меня val, а не var
источник

U

Unat in Kotlin JVM
бывает :) Хорошо, когда есть кому поправить :D
источник

AE

Alexandr Emelyanov in Kotlin JVM
ага :)
источник