Size: a a a

Kotlin Community

2020 February 28

MT

Maxim Ternovtsi in Kotlin Community
И так нормально в целом
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
А вот это точно плохая идея, но вообще можно посмотреть в сторону runCatching
Точнее оно
источник

VM

Vadim Morozov in Kotlin Community
никто не подскажет почему не могу использовать sortedBy из конструктора?
private inner class MyValueEventListener<R: Comparable<R>>(
       sortedBy: (Goal) -> R? = { null }
   ): ValueEventListener {
       override fun onDataChange(dataSnapshot: DataSnapshot) {
           targetList.clear()
           dataSnapshot.children
               .mapNotNull { it.getValue(Goal::class.java) }
               .sortedBy(sortedBy)
               .toCollection(targetList)
           contract.updateViewContent()
       }
источник

AL

Alexander Levin in Kotlin Community
Vadim Morozov
никто не подскажет почему не могу использовать sortedBy из конструктора?
private inner class MyValueEventListener<R: Comparable<R>>(
       sortedBy: (Goal) -> R? = { null }
   ): ValueEventListener {
       override fun onDataChange(dataSnapshot: DataSnapshot) {
           targetList.clear()
           dataSnapshot.children
               .mapNotNull { it.getValue(Goal::class.java) }
               .sortedBy(sortedBy)
               .toCollection(targetList)
           contract.updateViewContent()
       }
Пометьте sortedBy как private val

(Параметры конструктора внутри функций не доступны сами по себе)
источник

VP

Vladimir Petrakovich in Kotlin Community
Vadim Morozov
никто не подскажет почему не могу использовать sortedBy из конструктора?
private inner class MyValueEventListener<R: Comparable<R>>(
       sortedBy: (Goal) -> R? = { null }
   ): ValueEventListener {
       override fun onDataChange(dataSnapshot: DataSnapshot) {
           targetList.clear()
           dataSnapshot.children
               .mapNotNull { it.getValue(Goal::class.java) }
               .sortedBy(sortedBy)
               .toCollection(targetList)
           contract.updateViewContent()
       }
Потому что параметры конструктора доступны только в конструкторе и инициализаторах
источник

VM

Vadim Morozov in Kotlin Community
Alexander Levin
Пометьте sortedBy как private val

(Параметры конструктора внутри функций не доступны сами по себе)
точно! спасибо)
источник

VM

Vadim Morozov in Kotlin Community
но всё равно не могу использовать данный класс
Type inference failed: Not enough information to infer parameter R in constructor MyValueEventListener<R: Comparable<R»>(sortedBy: (Goal) -> R? = ..)
please scpecify it explicitly
источник

VM

Vadim Morozov in Kotlin Community
Vladimir Petrakovich
Потому что параметры конструктора доступны только в конструкторе и инициализаторах
этот кейс сейчас у меня? или я что то упускаю?
источник

QH

Quantum Harmonizer in Kotlin Community
Vadim Morozov
этот кейс сейчас у меня? или я что то упускаю?
Не этот.
источник

VM

Vadim Morozov in Kotlin Community
а стоп
источник

VM

Vadim Morozov in Kotlin Community
должен обязательно вставить что то в конструктор
источник

VM

Vadim Morozov in Kotlin Community
но  у меня же данный параметр nullable
источник

VM

Vadim Morozov in Kotlin Community
почему ругается то?
источник

SB

Sergey Barmin in Kotlin Community
Потому что Not enough information to infer parameter R
источник

VM

Vadim Morozov in Kotlin Community
Sergey Barmin
Потому что Not enough information to infer parameter R
если я делаю сортировку
        targetsRef?.addListenerForSingleValueEvent(MyValueEventListener(Goal::priority))

то всё ок
источник

VM

Vadim Morozov in Kotlin Community
не получается с пустым конструктором использовать
источник

VM

Vadim Morozov in Kotlin Community
ну без использования сортировки
источник

SB

Sergey Barmin in Kotlin Community
Пустому конструктору тем не менее наверняка хочется знать тип R
источник

SB

Sergey Barmin in Kotlin Community
MyValueEventListener<String>() например
источник

VM

Vadim Morozov in Kotlin Community
Sergey Barmin
MyValueEventListener<String>() например
пишу что то аля
MyValueEventListener<Goal>()

говорит нужен Comparable<Goal>
иду на поводу и он добавляет вложенность
источник