@kotlin_lang

Страница 926 из 982
Konstantine
07.10.2018
02:07:05
Ух будет весело перекатываться
У меня при подключении 1.3-что-то все было окей. Потом выскочило окно, мол "давай поможем migrate всё это дело", я, конечно, принял и... всё просто подсветилось красно-желтым.

Ахуенный мигрейт )

Никита?❄️
07.10.2018
02:09:55
А типа если я врубаю Котлин 1.3 то у меня автоматом релизные корутины будут, да?

Google
Никита?❄️
07.10.2018
02:11:09
Никаких импортов и флагов

И ещё вопрос: spring boot на котлине 1.3 запустится?

Konstantine
07.10.2018
02:27:03
У меня, причем, 1.3 со старыми корутинами работали, в целом как надо. Но! При использовании withContext этот самый контекст не возвращался обратно. Т.е., я запускаю launch(UI), там делаю что-то в UI, дальше вызываю withContext(IO), что-то в нем вычисляю и снова возвращаюсь в UI, но в этот момент падало, мол я работаю не в MainThread. После обновления корутин всё стало окей.

Так и не понял, в чем беда была

Vladimir
07.10.2018
03:04:03
Это же не 1.3, да?

Quantum Harmonizer
07.10.2018
07:40:37
Marina
07.10.2018
07:41:46
Алексей
07.10.2018
07:45:13
1.3 RC
Когда релиз-то в итоге? soon?

Руслан
07.10.2018
07:47:07
Когда релиз-то в итоге? soon?
Да, как только так сразу

Пока попробуйте EAP и напишите есть ли проблемы

Алексей
07.10.2018
07:48:26
Как до своих проектов доберусь

А чем eap от релиза отличается?

Руслан
07.10.2018
07:50:20
Считай что это beta

Google
Алексей
07.10.2018
07:50:50
ок

Quantum Harmonizer
07.10.2018
08:06:09
Когда релиз-то в итоге? soon?
не знаю, меня такие мелочи не беспокоят)

Danil
07.10.2018
09:18:22
Где лучше объявлять const val? Внутри companion object или как топ лвл?

D
07.10.2018
09:21:12
Где лучше объявлять const val? Внутри companion object или как топ лвл?
Сделайте так и так и гляньте в байткоде

Статик поля получаются если топ лвл на последних версиях котлина. Но некоторый диссонанс при чтении кода тоже получается

Danil
07.10.2018
09:30:28
Посмотрел, топ лвл создаёт новый класс в нутри с константой, а с компаньён он создаёт пустой компаньён, а константу объявляет в самом классе вне компаньёна

Alexander
07.10.2018
09:30:56
Думаю, что вопрос был не в этом. С точки зрения программы лучше делать глобальные переменные и константы только в случае острой необходимости

Danil
07.10.2018
09:32:13
Мне просто было интересно, что более хорошим тоном считается, так понял кому как больше нравиться, тот так и делает

Alexander
07.10.2018
09:32:41
Не совсем

Глобальные объявления засоряют глобальный же namespace, так что почти всегда лучше в компаньене

Mikhail
07.10.2018
10:28:44
Я немножко не в теме, а что такое глобальный неймспейс?

Все же по классам раскидано, по пакетам

Bogdan
07.10.2018
10:36:03
Я немножко не в теме, а что такое глобальный неймспейс?
в котлине можна вне класса (ну по факту будет класс, но это в джаве), хотя я как понимаю это будет модуль (что таки можно назвать namespace проводя аналогию с тем же шарпом)

Roman
07.10.2018
10:42:08
А Котлине private работает внутри файла. Очень удобно так объявлять константы, вские help-functions и дополнительные (вспомогательные) классы. Companion objects не совсем для этого сделаны. Объявлять там константы можно, но зачем?

Quantum Harmonizer
07.10.2018
10:42:39
меня вот печалит, что нельзя объявить константы так, чтобы не сгенерировался отдельный класс

Руслан
07.10.2018
10:48:02
меня вот печалит, что нельзя объявить константы так, чтобы не сгенерировался отдельный класс
Я вот никогда такое не пробовал, но что если file:jvmname написать и указать там имя класса?

Roman
07.10.2018
10:51:39
чтобы иконка в левой панели была как у класса, а не как у файла)
Аргумент. Прямо даже не знаю что ответить. Вот: https://youtrack.jetbrains.com/issue/KT-27432

меня вот печалит, что нельзя объявить константы так, чтобы не сгенерировался отдельный класс
На это есть целый ряд issues: https://youtrack.jetbrains.com/issue/KT-18633 & https://youtrack.jetbrains.com/issue/KT-15595

Google
Beholder
07.10.2018
11:39:46


этой штуке надо сразу передавать аргумент, присвоить промежуточное выражение никуда нельзя

Руслан
07.10.2018
11:45:05
Баг :)

Алексей
07.10.2018
11:45:34
разве баг?

это же аннотация, она, по-хорошему, не очень просто парсится

Quantum Harmonizer
07.10.2018
11:46:01
Баг :)
Ну я такую мелочь обычно в тререке не завожу чтобы не отвлекать :)

Алексей
07.10.2018
11:46:01
если я не ошибаюсь:)

Алексей
07.10.2018
11:47:03
Ну если я правильно понял, ошибка там связывается с тем, что класс Sample и в байткоде ему пытаются тоже самое имя присвоить

Алексей
07.10.2018
11:47:04
так?

Руслан
07.10.2018
11:47:12
разве баг?
Если что-то не компилится, а ide об этом заранее не говорит - это баг.

Beholder
07.10.2018
11:47:12


dimiii
07.10.2018
11:49:30
Внезапно, для object Singleton компилятор не переопределяет equals

Beholder
07.10.2018
11:50:53
он же может быть равен только самому себе

Konstantine
07.10.2018
11:51:56
Кстати, я правильно понимаю, что object всегда висит в памяти, даже если не используется? А то тут как то говорили, что они lazy, но где-то недавно прочитал, что они инициализируются сразу класслоадером. Плюс, может ли его собрать gc, а в случае чего пересоздать

dimiii
07.10.2018
11:52:51
он же может быть равен только самому себе
и сравнивать как ссылки - вот только у меня объект десериализованный в памяти расположен в другом месте, чем object в коде.

Google
Руслан
07.10.2018
11:52:56
Внезапно, для object Singleton компилятор не переопределяет equals
Компилятор никому ничего не должен, ну разве что спецификации, но спецификации нет, так что действительно никому ?

Konstantine
07.10.2018
11:54:06
Где прочитал?
Не помню:( Еще в начале недели в статье из андроид викли какой-то.

Bogdan
07.10.2018
11:54:11
нет он лейзи, ибо загрузка класссса - лейзи
хотя это jvm, как там в анрюше не знаю

Konstantine
07.10.2018
11:54:26
Quantum Harmonizer
07.10.2018
11:54:28
Admin
ERROR: S client not available

Quantum Harmonizer
07.10.2018
11:54:44
Bogdan
07.10.2018
11:54:50
тогла Сингелтон Lazy

Konstantine
07.10.2018
11:55:08
Неа, можно насоздавать
Тогда получается будет много синглтонов, хм

Bogdan
07.10.2018
11:55:32
Не особо знаю матчасть. Он разве не один всегда?
разные ClassLoader, класс можно загрузить несколько раз, благодаря разным ClassLoader-ам

Beholder
07.10.2018
11:55:50
new URLClassLoader(...) и вперёд

Quantum Harmonizer
07.10.2018
11:56:05
Beholder
07.10.2018
11:56:25
веб-контейнеры (Tomcat) создают по класслоадеру на каждое приложение

Руслан
07.10.2018
11:57:04
Да, но это нормально.
"Синглтон то ненастоящий!"

Google
Bogdan
07.10.2018
11:57:11
вы еще osgi вспомните

dimiii
07.10.2018
11:57:45
Не особо знаю матчасть. Он разве не один всегда?
object Test Test == Test true import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper val mapper = jacksonObjectMapper() mapper.readValue("{}", Test::class.java) Line_0$Test@781a51d0 mapper.readValue("{}", Test::class.java) == Test false

Konstantine
07.10.2018
11:57:57
Так, а в контексте андроид приложения - класс лоадер по умолчанию один?

Руслан
07.10.2018
11:58:58
А вообще синглтонов можно наплодить например с помощью джавовой сериализации

Bogdan
07.10.2018
11:59:37
Так, а в контексте андроид приложения - класс лоадер по умолчанию один?
почти всегда он один (на самом деле нет, там есть еще системные), но иногда из-за такой фичи можно получить неожиданый нежданчик

dimiii
07.10.2018
11:59:51
Подожди, зачем ты это делаешь?
Ну у меня есть sealed class Message и пачка потомков (data class/ object) от него

Konstantine
07.10.2018
12:00:29
почти всегда он один (на самом деле нет, там есть еще системные), но иногда из-за такой фичи можно получить неожиданый нежданчик
И в таком случае получается, что он (object) заинитится сразу и будет жить всегда пока живо приложение?

Руслан
07.10.2018
12:01:14
Ну у меня есть sealed class Message и пачка потомков (data class/ object) от него
Валидно, тут действительно не удобно получается.

Beholder
07.10.2018
12:02:03
для джавововской сериализации есть механизм readResolve, чтобы подменять прочитанные значения. для jackson наверняка тоже подобное есть, надо покопаться

dimiii
07.10.2018
12:02:47
И в таком случае получается, что он (object) заинитится сразу и будет жить всегда пока живо приложение?
сообщения без полей (сделал object-ами из-за того что data class без полей не создать) десериализируются из json как НОВЫЙ синглтон каждый раз. Из-за чего долго сидел с тестами, не понимая, в чем дело.

Konstantine
07.10.2018
12:03:15
Да не сразу, а по первому требованию
Странно, он там в статике вроде сразу инитится. Но окей, не сразу, но жить то будет уже получается всегда с приложением после инициализации? Или его может собрать GC и потом он пересоздастся?

Руслан
07.10.2018
12:04:05
можно еще рефлексией
И наверняка ещё unsafe на такое способен

Beholder
07.10.2018
12:04:13
а почему этот ваш jackson, кстати, смеет создавать объект с private конструктором?

Страница 926 из 982