
dimiii
04.07.2018
11:58:57
Резюмируем: аннотации хороши для аннотирования
В раж метапрограммирования лучше не пускаться

Andrey
04.07.2018
12:09:54
Аннотации хороши для:
1. Различных валидаций времени компиляции.
Для всего остального они не очень, мягко говоря.
Их засилье в джаве связано с тем, что они появились в языке очень рано. До дженериков и лямбд.
Поэтому в Kotlin их лучше использовать только если иначе совсем никак, благо в языке много других способов реализовать ту же функциональность.

Костя
04.07.2018
12:28:34
а чем плохо такое решение ? https://habr.com/post/66593/

Google

Костя
04.07.2018
12:28:50
сделать класс-наследник List<Float> например
просто у меня ситуация что надо менять конвертеры в retrofit
а там это можно только или по аннотациям у методов кастомным, или по значению типа, что для листа неочень выйдет
т.к. у них ещё внутренний параметр

Vadim
04.07.2018
12:33:56
Есть какая обратная функция для String.format ? аля deformat ?
String.format(“%1$s likes”, likeCount)

Andrew
04.07.2018
12:35:39

Vladymyr
04.07.2018
12:38:24
Не полуается собрать проект, ошибка "Failed to resolve: appcompat-v7",
implementation 'com.android.support:appcompat-v7:27.1.1'
В чём может быть проблема?

Andrew
04.07.2018
12:39:14
repositories { google() } есть?
Ну и да, это очень уж мимо котлина.

Vladymyr
04.07.2018
12:39:36
есть

Кузьма
04.07.2018
13:06:58
всем привет, может кто-нибудь подсказать, при попытке подключить корутины к Android проекту у меня ломается вся сборка, больше не видны импорты ни View ни AppCompatActivity и т.п. ..
подключаю так :
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.23.4'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.23.4'
код, который пытаюсь выполнить
launch(UI) {
val response = async(CommonPool) {
coinMarketCupApi.ticker(0, 100, null).execute()
}.await()
adapter.addAll(response.body() ?: listOf())
}

Oleg
04.07.2018
13:08:37
на версию stdlib не ругается? =)

Google

Кузьма
04.07.2018
13:08:54
ломается при подключении kotlinx-coroutines-android
если подключать core, то всё работает

Oleg
04.07.2018
13:11:40
Could not find org.jetbrains.kotlin:kotlin-stdlib-common:1.2.51. такого в ошибках нет?

Кузьма
04.07.2018
13:17:36
сейчас скрин скину
такое ощущение, что это студия ломается
а с кодом всё норм

dimiii
04.07.2018
13:20:45
неверное ощущение, aлсо https://t.me/kotlin_mobile

Алексей
04.07.2018
13:20:53
Как сделать lateinit val?

Кузьма
04.07.2018
13:21:10
val можно инициализировать через lazy {}

Алексей
04.07.2018
13:21:46
Ну у меня id, он должен быть val

Жабра
04.07.2018
13:21:47
async(CommonPool) не имеет смысла, т.к. дефолтный контекст DefaultDispatcher, а он и есть сейчас CommonPool. Да и к тому же async { }.await() путает, пишите withContext(DefaultDispatcher)

Кузьма
04.07.2018
13:22:14

Konstantine
04.07.2018
13:22:16

Жабра
04.07.2018
13:22:58
Lazy.
Ну lazy - это другое.

Кузьма
04.07.2018
13:23:11

Google

Кузьма
04.07.2018
13:23:40

Konstantine
04.07.2018
13:24:03

Жабра
04.07.2018
13:24:20

Кузьма
04.07.2018
13:24:58

Konstantine
04.07.2018
13:25:01

Жабра
04.07.2018
13:26:25

Konstantine
04.07.2018
13:27:18

Andrey
04.07.2018
13:27:22

Жабра
04.07.2018
13:27:48

Konstantine
04.07.2018
13:28:42

Алексей
04.07.2018
13:28:47

Andrey
04.07.2018
13:28:58

Жабра
04.07.2018
13:29:17

Алексей
04.07.2018
13:29:28
Я вот не хочу var, хочу val)))

Quantum Harmonizer
04.07.2018
13:30:20

Жабра
04.07.2018
13:31:06
Я просто пытаюсь понять, какую задачу вы решаете.
Я имел ввиду, что иногда не вариант инициализировать переменную в lazy. Когда кода слишком много. lateinit var можете инициализировать откуда угодно, а lazy инициализируется при первом обращении и то внутри своего блока.

Konstantine
04.07.2018
13:31:47

Google

Жабра
04.07.2018
13:32:07

Konstantine
04.07.2018
13:32:18

Andrey
04.07.2018
13:34:04
Алексей, а почему вам так критично, чтобы было val, а не var?

Алексей
04.07.2018
13:35:34

Andrey
04.07.2018
13:37:24
Потому что это id
Ок. А что предполагается делать, если на момент обращения к id он ещё не инициализирован?
lateinit в этом случае будет падать в рантайме с ошибкой UninitializedPropertyAccessException
Это то поведение, которое вам нужно?
Кроме того, примитивы (Long) не бывают lateinit

Алексей
04.07.2018
13:40:53

Konstantine
04.07.2018
13:41:42
А нельзя, потому что val неизменяемая, а в случае с lateinit она меняется.

Алексей
04.07.2018
13:42:15
Ок

Andrey
04.07.2018
13:43:04

Quantum Harmonizer
04.07.2018
13:43:30
* не хочет :)

Andrey
04.07.2018
13:45:04
* не хочет :)
Алгоритм, так гарантировать отсутствие переприсвоения для lateinit var foo: String в студию.

Quantum Harmonizer
04.07.2018
13:45:50

Andrey
04.07.2018
13:46:21
Все проверки компилятора должны быть выполнены до исполнения.

Quantum Harmonizer
04.07.2018
13:47:11

Алексей
04.07.2018
13:47:15
Почему нельзя делать latainit var для Int и Long?

Quantum Harmonizer
04.07.2018
13:48:07

Алексей
04.07.2018
13:48:33
Ок

Kirill
04.07.2018
13:49:57

Google

Алексей
04.07.2018
13:50:07
Да

Quantum Harmonizer
04.07.2018
13:50:10
это уже java.lang.Integer

Kirill
04.07.2018
13:50:15
А тут что происходит?
А.
То есть он по ситуации смотрит.
Но старается сделать примитив где можно.

Quantum Harmonizer
04.07.2018
13:51:03
lateinit можно было бы тоже забоксить, но, видимо, консистентность/предсказуемость важнее

Kirill
04.07.2018
13:51:19
Ясно.

Andrey
04.07.2018
13:52:44

Quantum Harmonizer
04.07.2018
13:53:16

Kirill
04.07.2018
13:53:24
Там же const для компайл тайм проверок, нет?

Quantum Harmonizer
04.07.2018
13:54:04

Leonid
04.07.2018
13:54:16
val обычно в final поле компилируется
А lateinit val даже с проверкой потеряет эту семантику

Andrey
04.07.2018
13:57:16
const для компайл-тайм-констант, очень ограниченная штука
const - значение, которое val, при этом может быть вычислено ещё до исполнения. Например const val bar = 1 + 1 в байт коде выглядит так: public final static I bar = 2
То есть его при компиляции уже посчитали и прописали результат


Sander
04.07.2018
17:53:35
ребята у меня вопрос как начинающиму, который изучает Kotlin,
есть видео курсы только по Java нормальные, по Kotlin нормальных курсов нет step by step,
поэтому как лучше изучать материал?
смотрю это сейчас на udemy - https://www.udemy.com/java-the-complete-java-developer-course/learn/v4/
- Просмотреть вначале видео уроки по Java, а потом начать изучать Kotlin? Потому что по Kotlin нормальных курсов нет,
тогда легче уже будет разобраться с Kotlin.
Сейчас изучая Kotlin остановился на коллекциях, понял что надо еще изучить много базоых вещей.
----
может кто что посоветует, кто уже проходил этот путь обучения, можно конечно просто документацию прочесть,
но начинающему мне кажется по видео курсам будет проще, хоть и медленней.
----
наверное вопрос очень сложный?


Quantum Harmonizer
04.07.2018
18:06:38
ребята у меня вопрос как начинающиму, который изучает Kotlin,
есть видео курсы только по Java нормальные, по Kotlin нормальных курсов нет step by step,
поэтому как лучше изучать материал?
смотрю это сейчас на udemy - https://www.udemy.com/java-the-complete-java-developer-course/learn/v4/
- Просмотреть вначале видео уроки по Java, а потом начать изучать Kotlin? Потому что по Kotlin нормальных курсов нет,
тогда легче уже будет разобраться с Kotlin.
Сейчас изучая Kotlin остановился на коллекциях, понял что надо еще изучить много базоых вещей.
----
может кто что посоветует, кто уже проходил этот путь обучения, можно конечно просто документацию прочесть,
но начинающему мне кажется по видео курсам будет проще, хоть и медленней.
Документация + Kotlin Koans