Size: a a a

Kotlin Community

2020 July 08

AH

Ayrat Hudaygulov in Kotlin Community
Alexander Nozik
Я не знаю, что такое флинк. Но скаловая метадата работать не будет, используете тогда котлиновский Type без джавового класса, он как раз в метадате сохраняется
флинк это модный спарк)
источник

AH

Ayrat Hudaygulov in Kotlin Community
Alexander Nozik
Я не знаю, что такое флинк. Но скаловая метадата работать не будет, используете тогда котлиновский Type без джавового класса, он как раз в метадате сохраняется
апи там работает с джавовым Class.. Ладно, попробую воткнуть со стиранием, но чувствую бомбанёт в рантайме
источник

RI

Ruslan Ibragimov in Kotlin Community
источник

RI

Ruslan Ibragimov in Kotlin Community
В доке же написано что делать с дженериками
источник

RI

Ruslan Ibragimov in Kotlin Community
Это по сути тоже что typeOf() только через костыли JVM
источник

AH

Ayrat Hudaygulov in Kotlin Community
о, спасибо. Кто-то прочитал доку за меня!
источник

X

X in Kotlin Community
Можно как нибудь попросить компиллер, чтобы он запретил в какой то функции использовать глобальные переменные? Аналога pure fuctions в котлине нет, я изучал. Но мне достаточно просто кинуть ошибку, если я сделаю вот так:
@NoGlobalValVar
fun something() {
println(globalValOrVar)
}
источник

RI

Ruslan Ibragimov in Kotlin Community
X
Можно как нибудь попросить компиллер, чтобы он запретил в какой то функции использовать глобальные переменные? Аналога pure fuctions в котлине нет, я изучал. Но мне достаточно просто кинуть ошибку, если я сделаю вот так:
@NoGlobalValVar
fun something() {
println(globalValOrVar)
}
Написать расширение для detekt и запретить там global var https://arturbosch.github.io/detekt/extensions.html
источник

AN

Alexander Nozik in Kotlin Community
X
Можно как нибудь попросить компиллер, чтобы он запретил в какой то функции использовать глобальные переменные? Аналога pure fuctions в котлине нет, я изучал. Но мне достаточно просто кинуть ошибку, если я сделаю вот так:
@NoGlobalValVar
fun something() {
println(globalValOrVar)
}
Это очень сложно отследить. Есть только защита от неявного вызова внешнего скоупа. Но фича интересная.
источник

X

X in Kotlin Community
Alexander Nozik
Это очень сложно отследить. Есть только защита от неявного вызова внешнего скоупа. Но фича интересная.
Я так понимаю, это "защиту" адаптировать под задачу не выйдет?
Фича, действительно, интересная. Надоело ловить баги из за плохо сделанного кода, ссылающегося на глобальные переменные. IDEA можно настроить, чтобы она выделяла вызовы глобальных переменных, но я не нашел, как в ней убрать подсвечивание переменных других объектов, типа
fun something(dataClass: DataClass)
println(dataClass.member)
println(globalVar)
}

При попытке настроить подсветку только globalVar, подсвечивается и "member". Так что не знаю, что можно использовать для решения этой задачи
источник

X

X in Kotlin Community
Ruslan Ibragimov
Написать расширение для detekt и запретить там global var https://arturbosch.github.io/detekt/extensions.html
Спасибо, попробую таким методом
источник

М

Миронов Борис... in Kotlin Community
Народ, подскажите что за ошибка?

com.android.tools.build:gradle:4.2.0-alpha03
ext.kotlin_version = '1.3.72'
источник

AM

Andrew Mikhaylov in Kotlin Community
Миронов Борис
Народ, подскажите что за ошибка?

com.android.tools.build:gradle:4.2.0-alpha03
ext.kotlin_version = '1.3.72'
Там же ж написано, internal compiler error. Чапать на kotl.in/issue и искать похожую проблему / заводить новую.
источник

AM

Alex M in Kotlin Community
Здравствуйте! На основании примера https://codelabs.developers.google.com/codelabs/advanced-kotlin-coroutines/#13 хочу сделать канал, который подвязан к ui переключателю. На каждое переключение должен отрабатывать интернет запрос. Проблема в том, что при возникновении ошибки (например отсутствующее интернет соединение) отрабатывает блок .catch{} внутри которого есть обработка этой ошибки с оповещением ui, но также срабатывает и .onCompletion{}, flow отменяется и на дальнейшие переключения нет никакой реакции. Просьба подсказать, как в таком случае лучше организовать логику?
источник

AL

Anton Lakotka in Kotlin Community
Alex M
Здравствуйте! На основании примера https://codelabs.developers.google.com/codelabs/advanced-kotlin-coroutines/#13 хочу сделать канал, который подвязан к ui переключателю. На каждое переключение должен отрабатывать интернет запрос. Проблема в том, что при возникновении ошибки (например отсутствующее интернет соединение) отрабатывает блок .catch{} внутри которого есть обработка этой ошибки с оповещением ui, но также срабатывает и .onCompletion{}, flow отменяется и на дальнейшие переключения нет никакой реакции. Просьба подсказать, как в таком случае лучше организовать логику?
не кидать исключения, а заворачивать их вместе с нормальными сообщениями в Sealed class и передавать по каналу.
источник

AM

Alex M in Kotlin Community
Anton Lakotka
не кидать исключения, а заворачивать их вместе с нормальными сообщениями в Sealed class и передавать по каналу.
а еще есть варианты?
источник

AL

Anton Lakotka in Kotlin Community
попробовать поменять местами .catch и .onCompletion
источник

AL

Anton Lakotka in Kotlin Community
и почитать доку что каждый flow оператор делает
источник

AM

Alex M in Kotlin Community
Anton Lakotka
и почитать доку что каждый flow оператор делает
Спасибо
источник

AL

Anton Lakotka in Kotlin Community
Я так понимаю эксепшн вылетает в эммитере. Если так, то его нужно обязательно оборачивать. Иначе эмиттер всегда будет
завершаться
источник