@kotlin_lang

Страница 465 из 982
Nick Senchurin
22.12.2017
09:30:49
мм, но после первого лета это же будет уже другой ит?

Igor
22.12.2017
09:32:24
Жаль только ошибка. За такое током бить надо.)) Не все исходники читают в idea.)
дык тут-же, на пару сообщений выше, и насоветовали =)

Dmitry
22.12.2017
09:34:29
мм, но после первого лета это же будет уже другой ит?
Если вложенные - надо именовать параметр user?.let { user -> //...

Nick Senchurin
22.12.2017
09:36:12
мне исходный объект надо замапить объект для сохр. в бд и после сохранения вернуть исходный, у меня просто цепочка реактивная и я хочу пробросить вниз, но про именованные параметры в лямбдах посмотрю,спасибо

Google
Dmitry
22.12.2017
09:37:29
Тут я бы про организацию кода подумал, звучит как лапша -)

Yury
22.12.2017
11:46:54
непонял, как блокирующая операция в одной корутине, заблокирует выполнение другой корутины, ониж типа независимо друг от друга работают, и даже если вы не будете добавлять IO в корутины, одновременно будет выполняться столько, сколько влазит в пул
если скажем пул ОС потоков - 4, то если в каких-то 4 корутинах будут выполнятся блокирующие операции, например вызов Jdbc. То остальные +100500 корутин повиснут в ожидании освобождения какого-нибудь из этих 4 ОС потоков.

может суть вопроса в том, работает ли внутри корутин ThreadLocal?
Не работает, там вроде как свой контекст корутины. Это одна из причин почему к примеру hibernate не будет работать асинхронно на корутинах.

Yury
22.12.2017
12:02:52
Ага. Значит буду разруливать тредами. Спасиб.
Jdbc к сожалению работает только в синхронном варианте. Есть вроде такого асинхронной работы с postgre/mysql https://github.com/mauricio/postgresql-async Но там все печально

http://vertx.io/docs/

Кст говоря, кто-нибудь знает в какой версии корутины перестанут быть эксперементальными?

Konstantine
22.12.2017
12:15:58
В чем разница аннотаций @field:SerializedName и @SerializedName?

Quantum Harmonizer
22.12.2017
12:18:16
В чем разница аннотаций @field:SerializedName и @SerializedName?
вторая, вероятно, ляжет на геттер или сеттер

Nick Senchurin
22.12.2017
13:19:54
Google
Dmitry
22.12.2017
13:22:59
Return не надо, also сам по себе возвращает ресивер. Т.е. object.also { println(it) } выведет object и вернёт его

Лёша
22.12.2017
13:39:36
also{return it} что то вроде такого?
в лямбде последнее выражение возвращаемое значение

Rail
22.12.2017
15:50:58
Привет, ребята! Подскажите пожалуйста каналы о языке Котлин?

Grigory
22.12.2017
15:53:51
думаю не будет рекламой: https://github.com/mtdvio/ru-tech-chats тут вот список чатиков вообще всех русскоязычных тех которых нет - те можно добавить

Vitalii
22.12.2017
16:16:47
https://github.com/goq/telegram-list И ещё один

Vitalii
22.12.2017
17:31:11
Andrew
22.12.2017
17:56:53
Уговорили, готово.

John
25.12.2017
12:35:06
подскажите пожалуйста разницу. Я так и не усвоил 1) class A{ fun function1(){} } 2) fun function1(){} 3) class A1{ companion object { fun function1(){} } } между первым и вторым, и между вторым и третьем. Какие подводные камни?

Artem
25.12.2017
12:37:29
1. Функция в классе 2. Просто функция 3. Функция, которую можете вызывать как статик функцию. A1.function()

John
25.12.2017
12:39:21
это я понял. Когда уместны эти три варианты? Например зачем писать 3 вариант, когда можно сделать 2.

Ivan
25.12.2017
12:39:45
подскажите пожалуйста разницу. Я так и не усвоил 1) class A{ fun function1(){} } 2) fun function1(){} 3) class A1{ companion object { fun function1(){} } } между первым и вторым, и между вторым и третьем. Какие подводные камни?
Для второго случая генерируется класс обертка по названию файла, сам метод считается статическим. Для того, чтобы стереть все сомнения в идее нажми Tools -> Kotlin -> Show Kotlin Bytecode -> Decompile

Artem
25.12.2017
12:40:29
Или ctrl+shift+a и там пиши show kotlin bytecode

:)

John
25.12.2017
12:40:41
спасибо!)

Ivan
25.12.2017
12:40:47
ну это надо хоткеи знать, я так не играю

Igor
25.12.2017
12:41:04
это я понял. Когда уместны эти три варианты? Например зачем писать 3 вариант, когда можно сделать 2.
Что бы не засорять скоуп пакета лишними функциями. Да и если у тебя будут такие функции в двух соседних файла, у тебя даже код не скомпилируется.

Timur
25.12.2017
12:41:41
3 случай - типичный статический метод из джавы, например конструктор можно там вызывать чтобы создавать разные объекты

Dmitry
25.12.2017
12:42:32
companion object это полный аналог статического класса в джаве или есть нюансы?

Google
Artem
25.12.2017
12:43:00
Ну, вроде бы можно ему имя давать)

Artem
25.12.2017
12:43:42
А вы просто задекомпильте и посмотрите, во что компаньон превращается

Igor
25.12.2017
12:51:06
companion object это полный аналог статического класса в джаве или есть нюансы?
Ну формально это будет синглтон-объект A1.Companion (его можно в коде дернуть напрямую) Соответственно, он может даже наследовать классы/интерфейсы class A1 { companion object : MyBaseClass(), Comparable<String> { fun function1() {} override fun compareTo(other: String): Int =TODO() } } И если не накинуть @JvmStatic на функции, то их вызовы будет не “статическими-методами”, а самыми настоящими “виртуальными” методами объекта A1.Companion (только весь стейт фактически будет в static полях храниться)

Igor
25.12.2017
13:06:34
Точно. Если кто-то подумал что с jvmstatic будет быстрее, то извиняюсь что ввел в заблуждение.

Dmitry
25.12.2017
13:42:13
@angmarr, @Harmonizr спасибо

John
25.12.2017
13:42:54
Спасибо большое за ответы!

Quantum Harmonizer
25.12.2017
15:13:00
Как поддерживать бинарную совместимость функций с параметрами по умолчанию? В этом примере interface X { fun a(name: String = "Vasya", newParam: Int = 100500) @Deprecated(message = "Only for binary compatibility", level = ERROR) fun a(name: String = "Vasya") = a(name, 100500) } fun main() { val x: X = ... x.a("Dimon") // error } компилятором выбирается легаси-функция, я никак не смогу в новых версиях её выпилить.

Quantum Harmonizer
25.12.2017
15:35:34
Igor
25.12.2017
15:36:39
DeprecationLevel.HIDDEN или у тебя стороння либа? (Если не поможет, могу только посоветовать переименовать метод ?‍♀️)

Admin
ERROR: S client not available

? animufag ?
25.12.2017
17:43:58
хмм. что-то таймпад не особо напоминает что завтра/сегодня мероприятие

Igor
25.12.2017
20:50:00
Да вроде вчера приходило. Кстати было классно, в кое-то веке угощали ? и ? (ну и Роман интересно рассказал ?). Даже что то новое узнал (мысли Романа насчёт неявности вызова suspended функций)

Bogdan
25.12.2017
20:53:38
А выложат его в открытый доступ?

Писец тут аншлаг (видос снимают)

Google
Igor
25.12.2017
20:55:19
А выложат его в открытый доступ?
Конечно, все снимали профессионально. Через недельку/две наверное (обработают ещё)

Bogdan
25.12.2017
20:55:48
а на каком канале ждать?

Igor
25.12.2017
20:56:33
https://www.youtube.com/user/JUGRuVideo

Konstantin
25.12.2017
20:56:35
а на каком канале ждать?
В kug spb наверняка выложат, сюда тоже рано или поздно.

Bogdan
25.12.2017
20:57:21
я про ресурс, ютуб или иные площатки, я подисан на разные группы

но не уверен на те ли

Igor
25.12.2017
20:57:55
В kug spb наверняка выложат, сюда тоже рано или поздно.
При чем тут kug. Это была обычная встреча JUG

Konstantin
25.12.2017
20:59:39
А, это просто я ракую, про встречу оттуда узнал.

Sasha
26.12.2017
05:29:06
Мужики, помогите развеять недопонимание с корутинами.) Вообщем полез смотреть реализацию одной либы async await и наткнулся вот на такой код private class AsyncThreadFactory(val name: String) : ThreadFactory {    private var counter = 0    override fun newThread(r: Runnable): Thread {       counter++       return Thread(r, "$name-$counter")    } } Правильно ли я понимаю, что это эквивалентно new Thread? Что-то я уже запутался. Спасибо.

Dmitry
26.12.2017
05:41:20
Надо смотреть реализацию предка

Корутин то в этом коде нет

Sasha
26.12.2017
05:47:56
Вот https://github.com/metalabdesign/AsyncAwait/blob/master/asyncawait/src/main/kotlin/co/metalab/asyncawait/Async.kt

Igor
26.12.2017
09:02:00
Мужики, помогите развеять недопонимание с корутинами.) Вообщем полез смотреть реализацию одной либы async await и наткнулся вот на такой код private class AsyncThreadFactory(val name: String) : ThreadFactory {    private var counter = 0    override fun newThread(r: Runnable): Thread {       counter++       return Thread(r, "$name-$counter")    } } Правильно ли я понимаю, что это эквивалентно new Thread? Что-то я уже запутался. Спасибо.
Ну так это же просто “стандартный подход”, что бы задать тредам нормальные имена (что бы при дебаги их видеть). Это фабрика будет реально вызваться когда нужен будет новый тред, НО выше же он передается в single-thread-executor, который еще и кешируется. return executors.getOrElse(this) { val newExecutor = Executors.newSingleThreadExecutor(AsyncThreadFactory(threadName)) executors[this] = newExecutor newExecutor }

Sergey
26.12.2017
10:09:34
эх еще бы MDC контекст из логгеров копировался

nikita
26.12.2017
10:11:09
спросил об этом вчера у Романа, он сказал, что поддержка MDC из коробки у них в запланированных задачах

Sergey
26.12.2017
10:13:24
было б отлично

Dumitru
26.12.2017
11:33:52
Простите за тупой вопрос, что такое MDC ? И для чего он

Руслан
26.12.2017
11:34:34
https://logback.qos.ch/manual/mdc.html

я подозреваю речь об этом

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