Kotlin: как классифицировать (). FooA (). FooB () - PullRequest
0 голосов
/ 20 марта 2020

В настоящее время я поднимаю свои навыки работы с кодом на более продвинутый уровень, чтобы добиться «более легкого сопровождения кода». Я получил эту проблему

val attachView = Custom()
    attachView.setRoot(root)
    attachView.setAdded(add)
    attachView.build()

Этот код, как вы можете видеть, я неоднократно вызывал метод attachView over и снова. он работает нормально, но я хочу, чтобы он был более компактным, исключая вызов attachView несколько раз. Моя конечная цель такова:

Custom().setRoot().setAdded().build()

Есть ли какой-то метод, который я должен знать, чтобы построить что-то подобное?

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Никакой внешний метод не даст вам такой семантики:

Custom().setRoot().setAdded().build()

Этого можно достичь, изменив внутреннее устройство класса Customer. Так что setRoot() и setAdded() вернут this. Как и fun setRoot(root: Root): Custom, et c.

С Kotlin вы можете использовать несколько функций, чтобы избежать добавления attachView. перед вызовом методов. Как

with(Custom()) {
    setRoot(root)
    setAdded(add)
    build()
}

-применить

Custom().apply {
    setRoot(root)
    setAdded(add)
    build()
}
0 голосов
/ 20 марта 2020
val attachView = Custom().apply {
   setRoot(root)
   setAdded(add)
   build()
}

Если вам действительно нужен однострочник, вы можете сделать это

 val attachView = Custom().apply { setRoot(root); setAdded(add); build() }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...