Однострочники Kotlin с несовпадающими типами возврата - PullRequest
0 голосов
/ 30 октября 2018

Я использую анонимный объект в разделе кода, который я пишу на Kotlin. Переопределенный метод может быть сжат в одну строку, потому что это одна строка кода, но вызов метода одной строки фактически возвращает значение типа T.

override onSomeListenerEvent(index: Int): Unit = myArrayList.remove(index)

Каков наилучший способ сохранить однострочность?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Вы можете создать расширение для изменения любого типа на единицу:

fun Any?.discardResponse() = Unit

Тогда:

override fun onSomeListenerEvent(index: Int) = myArrayList.remove(index).discardResponse()
0 голосов
/ 30 октября 2018

Следующее должно работать, даже если onSomeListenerEvent указал T в качестве типа возврата:

override fun onSomeListenerEvent(index: Int) { myArrayList.remove(index) }

Если вы скорее хотите спросить, как вы можете сохранить ваше = назначение, то будет работать и следующее (но поскольку первое короче и не требует apply, я бы придерживался первого):

override fun onSomeListenerEvent(index: Int) = Unit.apply { myArrayList.remove(index) }

Но опять же: ваше текущее решение уже достаточно простое и не принимает неудобных путей. Так что или используйте: : Unit или фигурные скобки; -)

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