@Dmtm
Android

Можно ли сократить такую конструкцию?

class Navigator {
    companion object {
           private fun add(command: ICommand) {...}
           private fun replace(fragment: Fragment) {...}

           fun showMain() = add(object : ICommand {
                override fun execute() {
                    replace(MainFragment.newInstance())
            }
        })

потому что в яве это выглядит так:
public static void showMain() {
        add(() -> replace(MainFragment.newInstance()));
    }
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Tiberal
class Navigator {
    companion object {
        private inline fun add(command: () -> Unit) {}
        private fun replace(fragment: Fragment) {}
        fun showMain() = add { replace(MainFragment.newInstance()) }
    }
}


так, например
Ответ написан
@Dmtm Автор вопроса
Android
вроде бы разобрался
private var add = { command: ICommand ->App.instance.commandExecutor.add(command) }
private var replace = { fragment: Fragment ->        .....      }

fun showMain() = add(object : ICommand {
    override fun execute() = replace(MainFragment.newInstance())
})

от анонимного объекта я так понимаю никак не избавиться?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы