У меня есть код:
class DrawerViewModel : ViewModel() { fun updateDrawerProfiles() { val example = DrawerUtils.exampleProfile example.add( DrawerAccount(3, "NEW Test") ) setDrawerProfiles(example) } }
class DrawerUtils { companion object { val exampleProfile = arrayListOf( DrawerAccount(1, "Facebook"), DrawerAccount(2, "Google") ) } }
[Пример кода выполнения] (https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS4zLjYxIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsImpzQ29kZSI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiXG5cbmZ1biBtYWluKGFyZ3M6IEFycmF5PFN0cmluZz4pIHtcbiAgICBwcmludGxuKERyYXdlclZpZXdNb2RlbCgpLnVwZGF0ZURyYXdlclByb2ZpbGVzKCkuc2l6ZSApXG4gICAgcHJpbnRsbihEcmF3ZXJWaWV3TW9kZWwoKS51cGRhdGVEcmF3ZXJQcm9maWxlcygpLnNpemUgKVxuICAgIHByaW50bG4oRHJhd2VyVmlld01vZGVsKCkudXBkYXRlRHJhd2VyUHJvZmlsZXMoKS5zaXplIClcbn1cblxuY2xhc3MgRHJhd2VyVmlld01vZGVsKCkge1xuXG4gICAgZnVuIHVwZGF0ZURyYXdlclByb2ZpbGVzKCkgOiBBcnJheUxpc3Q8RHJhd2VyQWNjb3VudD4ge1xuICAgICAgICB2YWwgZXhhbXBsZSA9IERyYXdlclV0aWxzLmV4YW1wbGVQcm9maWxlXG4gICAgICAgIGV4YW1wbGUuYWRkKCAgRHJhd2VyQWNjb3VudCgzLCBcIk5FVyBUZXN0XCIpIClcbiAgICAgICAgcmV0dXJuIGV4YW1wbGVcbiAgICB9XG5cbn1cblxuY2xhc3MgRHJhd2VyVXRpbHMge1xuICAgXG4gICAgY29tcGFuaW9uIG9iamVjdCB7XG5cbiAgICAgICAgdmFsIGV4YW1wbGVQcm9maWxlID0gYXJyYXlMaXN0T2YoXG4gICAgICAgICAgICBEcmF3ZXJBY2NvdW50KDEsIFwiRmFjZWJvb2tcIiksXG4gICAgICAgICAgICBEcmF3ZXJBY2NvdW50KDIsIFwiR29vZ2xlXCIpXG4gICAgICAgIClcbiAgICAgIFxuICAgIH1cbn1cbmRhdGEgY2xhc3MgRHJhd2VyQWNjb3VudCh2YXIgaWQ6IEludCwgdmFyIG5hbWU6IFN0cmluZyApXG5cbiJ9)
, когда я запускаю несколько раз, функция updateDrawerProfiles возвращает vailid размер списка. RUN x3 updateDrawerProfiles () | ВЫХОД: 3 4 5
должно быть 3 3 3.
Когда я перемещаю функцию updateDrawerProfiles за пределами объекта-компаньона - это нормально. Почему это так?
Неверно.
Компаньон DrawerUtils - Синглтон. Создайте его один раз, и объект будет существовать. Вы добавляете новые значения в exampleProfile 3 раза, поэтому имеет смысл увеличить размер до 3, затем до 4, а затем до 5.
DrawerUtils
exampleProfile
Пожалуйста, прочитайте эту топи c https://kotlinlang.org/docs/tutorials/kotlin-for-py/objects-and-companion-objects.html