Size: a a a

StartAndroid Ru Kotlin

2018 October 25

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Иван Захаров
у меня смутные ощущения что checkIntType<Int>() будет сверять этот переданный инт с внутренним интом внутри checkIntType
разве нет?
Да
источник

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Aleksandr
или так
class TestClass<T> {
 private inline fun <reified T> checkIntType(): Boolean {
   return Int::class == T::class
 }

 val isInt: Boolean by lazy {
   checkIntType<Int>()
 }
}
Внутри checkIntType по идее у тебя не тот Т, который в параметре класса, а локальный
источник

A

Aleksandr in StartAndroid Ru Kotlin
да, Вы правы
TestClass<Double>().also {
   println(" Int : ${it.isInt}")
 }

выдал true
источник

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Думаю это тянет на Puzzler :)
источник

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Пишу с телефона, поэтому не проверял, но возможно такой костыль сработает

class MyClass<T>(val type: KClass<T>) {
   val isInt: Boolean
       get() = Int::class == type
}


MyClass<Int>(Int::class).isInt
источник

ИЗ

Иван Захаров... in StartAndroid Ru Kotlin
Если передавать значение внутрь при инициализации, то офк должно сработать, можно даже не типизировать

class MyClass(val type: KClass<*>) {
   val isInt: Boolean get() = Int::class == type
}
var v = MyClass(Int::class).isInt
источник

ИЗ

Иван Захаров... in StartAndroid Ru Kotlin
Я для чего это пытался типизировать...
Чтобы в 1 строчку добавлять настройки sharedPreferences (а также читать и менять).
Правда тип настроек определяется из default Value
Но вроде получилось норм.
https://pastebin.com/cVB2fxXC
источник
2018 October 26

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Иван Захаров
Я для чего это пытался типизировать...
Чтобы в 1 строчку добавлять настройки sharedPreferences (а также читать и менять).
Правда тип настроек определяется из default Value
Но вроде получилось норм.
https://pastebin.com/cVB2fxXC
А как делать set в preferences в данном случае?

И ещё вопрос, там в get() разве не срабатывает смарткаст для defValue?
источник

ИЗ

Иван Захаров... in StartAndroid Ru Kotlin
Так же и делать.
Prefs.lastLogin = "test"
Не понял, на что он должен срабатывать?
источник

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Иван Захаров
Так же и делать.
Prefs.lastLogin = "test"
Не понял, на что он должен срабатывать?
А при таком вызове точно вызовется setter для value?
источник

ИЗ

Иван Захаров... in StartAndroid Ru Kotlin
Да, я проверял
источник

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Это странно.. построю позже
Но мне кажется слишком большая концентрация кастов на фрагмент кода:)
Потенциально опасно это
источник

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Иван Захаров
Да, я проверял
проверил, set не вызывается, значение сохраняется в полях которые в companion object, в преференсы не сохраняется
источник

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Иван Захаров
Да, я проверял
Вот этот код можно запустить и посмотреть логи
https://pastebin.com/AdQJe714
источник

.

. in StartAndroid Ru Kotlin
источник

PT

Paul Trinko in StartAndroid Ru Kotlin
Переслано от Paul Trinko
Кто-то использует ktlint? Как его подключить? Всё время ругается на неизвестный check.dependsOn ktlint
источник

PT

Paul Trinko in StartAndroid Ru Kotlin
Вот как выглядит файл.
источник

MK

Mikhail Kozlov in StartAndroid Ru Kotlin
Вопрос по корутинам. Столкнулся с непонятным помедением.

Вызываю launch {..}  в методе someMethod(). И если launch отрабатывает без исключений, то повторные вызовы someMethod() нормально запускают этот launch снова и снова.

Но если этот launch однажды завершился с исключением, то при повторных вызовах someMethod() launch не заходит внутрь, а сразу завершается тем исключением (как бы запоминает его). Так происходит до тех пор, пока не будет пересоздан контекст (в моем случае fragment)
источник

A

Akram in StartAndroid Ru Kotlin
Кстати вы не знаете почему может не показывать?
источник

ИЗ

Иван Захаров... in StartAndroid Ru Kotlin
чёрт, теперь понял, эти companion поля вначале инициализируются из настроек, а потом сеттером меняются не настройки а эти поля 8(
как бы это теперь починить...
источник