
Boris
13.02.2018
15:56:14
Похоже, что из коробки нет саспендбл лейзи, никто с этими он сталкивался?

Andrew
13.02.2018
15:57:11
По-моему из коробки вообще нету suspend property delegates.

Quantum Harmonizer
13.02.2018
15:58:00
suspend-делегаты вообще поддерживаются?

Boris
13.02.2018
15:58:36

Google

Andrew
13.02.2018
15:59:32
Дык lazy ж вроде делегатом является.

Boris
13.02.2018
15:59:41
Дефферед наверное можно использовать

Andrew
13.02.2018
16:01:51
Кстати да, можно даже async(start = CoroutineStart.LAZY) (запускается посредством .start() / `.await()`)

Boris
13.02.2018
16:03:05

Igor
13.02.2018
16:11:13

Andrew
13.02.2018
16:12:34
lazy ж вроде как раз для того, чтобы вызывать один раз, но при первом обращении.

Igor
13.02.2018
16:14:22
С lazy проблема, что в типе не понятно лази она или нет (да и то что одноразовая).
Иногда нужно что-то что-то типа rx.Single

Andrew
13.02.2018
16:14:24
Кстати, @fogone, для более точного соответствия этому делегату надо ещё обязательно сделать context = Unconfined, дабы оно инициализировалось ровно в том потоке, откуда и было первый раз дёрнуто.

Igor
13.02.2018
19:40:57
Господа, тут никто еще не дошел до кондиции ?
что бы заменить все свои ISomeNameService/ISomeNameRepository и тд (можно без I)
на лямбды (UserId) -> User
Ну и доп. вопрос, почему я не могу наследоваться от suspend лямбды?
те так могу
class DefaultService : () -> String
а так нет
class DefaultService : suspend () -> String

Quantum Harmonizer
13.02.2018
19:41:47

Igor
13.02.2018
19:42:21
OK, хотя я тоже не уверен что это хорошая идея ?

Google

Quantum Harmonizer
13.02.2018
19:47:01
интерфейс с suspend-функциями же можно имплементить)

Mikhail
13.02.2018
20:14:11

Quantum Harmonizer
13.02.2018
20:25:05

Andrew
13.02.2018
20:25:42
Наш ответ Егору Бугаенко -- он из объектов делает функциональщину, а мы из функций будем делать объекты!
(простите, не удержался)

Mikhail
13.02.2018
20:26:15

Kirill
13.02.2018
20:26:18

Quantum Harmonizer
13.02.2018
20:26:30

Mikhail
13.02.2018
20:26:48

Quantum Harmonizer
13.02.2018
20:27:13

Andrew
13.02.2018
20:27:55
@KirillTim я его боюсь, особенно после недавней недели backendsecret.
@Harmonizr я, собственно, не против наследования от функций, хотя сам ещё ни одного юзкейса не видел. Просто вспомнился товарисч.

Kirill
13.02.2018
20:28:28

Andrew
13.02.2018
20:28:43

Mikhail
13.02.2018
20:30:14
Я где то читал притчу, где мастер посылал ученика то изучать замыкания то ооп, пока тот не познал дзен

Quantum Harmonizer
13.02.2018
20:31:27

Mikhail
13.02.2018
20:33:21
для бедных: ru_lambda
http://ru-lambda.livejournal.com/27669.html

Quantum Harmonizer
13.02.2018
20:34:30

Mikhail
13.02.2018
20:36:51
Не, ты ответил, что в таком случае в котлине их метод invoke можно вызывать используя нотацию принятую для функций

Google

Quantum Harmonizer
13.02.2018
20:39:14

Vitalii
13.02.2018
20:40:24

Alexei
13.02.2018
20:40:47

Mikhail
13.02.2018
20:41:03

Kirill
13.02.2018
20:41:08

Quantum Harmonizer
13.02.2018
20:41:26

Kirill
13.02.2018
20:42:22

Quantum Harmonizer
13.02.2018
20:42:47
Ок, сорри
ну, это не замечание, не упрёк, просто лучше не надо

Kirill
13.02.2018
20:46:26

Vitalii
13.02.2018
20:50:29

Andrew
13.02.2018
20:53:28
Касательно "функция, потому что есть invoke()" -- в плюсах такие штуки (с перегруженным operator ()) зовутся функторами. А функции -- это функции.
Так что на мой взгляд объект не может быть функцией (в рамках Kotlin, офк).

Yeldos
14.02.2018
03:53:40
Каково переходить обратно на java после kotlina?

Ivan
14.02.2018
04:09:14

Badya
14.02.2018
05:31:49

Kira
14.02.2018
05:33:28

Sasha
14.02.2018
05:40:28

Ivan
14.02.2018
05:55:18
А на шестёрку?
Не пишу под андроид почти последние пол года, поэтому у меня java8 и котлин параллельно идут

Oleg
14.02.2018
06:20:48
а часто приходится пользовать аннотации типа @JvmStatic?
вообще зачем они?

Google

Oleg
14.02.2018
06:21:11
Я тут просто конвертером воспользовался, и он такую конструкцию вставил

pplcf
14.02.2018
06:24:09
очень редко
в основном для вызова котлин кода из явы

Anton
14.02.2018
06:25:24
ну если есть код на джаве то приходится)

Mi
14.02.2018
07:12:27
У меня общий вопрос, или даже просто интересно мнение каждого:
какими решениями для доступа к бд вы пользуетесь? Библиотеки/фреймворки/свои решения какие-то. Всё это в контексте Kotlin/Java конечно же. Может кто успешно переиспользует код доступа к бд между Android и Backend проектами. Интересны любые мысли по этому поводу

Kira
14.02.2018
07:16:01
Доступ к бд - mybatis

Igor
14.02.2018
07:17:21

Руслан
14.02.2018
07:25:52

Igor
14.02.2018
07:27:02

Phil
14.02.2018
07:29:26
Хм, а зачем вообще какие-то DSL обертки над эффективным DSL для работы с данными?

Igor
14.02.2018
07:30:24

Руслан
14.02.2018
07:30:26

Igor
14.02.2018
07:31:22
Ребят, а чтобы event-sourcing пощупать в Котлин, надо обязательно в akka идти? Попроще способа нет?

Igor
14.02.2018
07:32:21

Igor
14.02.2018
07:35:11
Я видимо не шарю, но там (в акке) есть еще и persistence - те с помощью этого можно вообще обходится без работы с базой напрямую.
Все переодически думаю, как бы написать несложную либу (на котлине), что бы это натянуть на Android ?

Phil
14.02.2018
07:36:51

Mi
14.02.2018
07:40:45
вообще я преследую цель избавиться от monkey job в качестве написания бойлерплейтного sql/маппинга из энтити в таблицу в обе стороны. Но при этом хотелось бы что-нибудь, что само может решить n+1 проблему
или это всё мечты и нужно выбирать между этим одно?


Руслан
14.02.2018
07:41:47
В смысле, зачем удобный SQL заменять ещё какими-то поделками? Обычно не совсем корректными и менее удобными и все равно требующими знания SQL.
Можно тогда спросить: "Зачем делать абстракции?" Я вот не считаю что SQL удобный, но знать его приходится, потому что абстракции не идеальны.
Вот у меня в ORM есть такой запрос:
val candidates = ObjectSelect.query(Candidate::class.java)
.where(Candidate.EMAIL.likeIgnoreCase(dbQuery))
.or(Candidate.COMPANY.likeIgnoreCase(dbQuery))
.or(Candidate.FIRST_NAME.likeIgnoreCase(dbQuery))
.or(Candidate.LAST_NAME.likeIgnoreCase(dbQuery))
.or(Candidate.PHONE.likeIgnoreCase(dbQuery))
.or(Candidate.PHONE2.likeIgnoreCase(dbQuery))
.or(Candidate.STATUS.likeIgnoreCase(dbQuery))
.or(Candidate.TAGS.dot(CandidateTag.NAME).likeIgnoreCase(dbQuery))
.offset(serviceConfiguration.pageSize * (page - 1))
.limit(serviceConfiguration.pageSize)
.orderByProp(Candidate.ID_PK_COLUMN)
.select(context)
.map { it.toDto() }
неужели он может выглядеть понятнее на SQL? как мне оформлять код, следить за типо безопасностью (и безопасностью типов :) )?


Igor
14.02.2018
07:42:57

Google

Igor
14.02.2018
07:43:01


Руслан
14.02.2018
07:43:32

Igor
14.02.2018
07:43:58

Руслан
14.02.2018
07:44:30
да даже jdbc template кажется лучше

Igor
14.02.2018
07:46:49

Igor
14.02.2018
07:47:22