val arrayListOf () в сопутствующем объекте возвращает недопустимое значение - PullRequest
0 голосов
/ 16 марта 2020

У меня есть код:

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 за пределами объекта-компаньона - это нормально. Почему это так?

1 Ответ

2 голосов
/ 16 марта 2020

должно быть 3 3 3.

Неверно.

Компаньон DrawerUtils - Синглтон. Создайте его один раз, и объект будет существовать. Вы добавляете новые значения в exampleProfile 3 раза, поэтому имеет смысл увеличить размер до 3, затем до 4, а затем до 5.

Пожалуйста, прочитайте эту топи c https://kotlinlang.org/docs/tutorials/kotlin-for-py/objects-and-companion-objects.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...