@kotlin_lang

Страница 540 из 982
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
По-моему из коробки вообще нету suspend property delegates.
Не до делегатов, лишь бы функциональность была готовая

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
Дык lazy ж вроде делегатом является.
Да, но суть в том, чтобы было удобно реализовать эту возможность

Igor
13.02.2018
16:11:13
Похоже, что из коробки нет саспендбл лейзи, никто с этими он сталкивался?
Я что-то похоже эмулирую, заменой просто suspend на хранение лямбды suspend () -> T за одно ее можно и много раз юзать

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, дабы оно инициализировалось ровно в том потоке, откуда и было первый раз дёрнуто.

С lazy проблема, что в типе не понятно лази она или нет (да и то что одноразовая). Иногда нужно что-то что-то типа rx.Single
В типе не понятно, да. По проперти снаружи вообще трудно делать хоть какие-то предположения, что за её get() стоит.

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

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

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

Quantum Harmonizer
13.02.2018
20:25:05
зачем вообще наследоваться от лямбд? по каким тегам это искать на порнолабе?
Лямбда — это вид выражения, (Arg) -> Ret — это называется «функциональный тип», а от абстрактных типов как раз и наследуются.

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

Mikhail
13.02.2018
20:26:48
Функции и есть объекты.
А обьекты - это функции

Quantum Harmonizer
13.02.2018
20:27:13
А обьекты - это функции
Только если у них есть invoke.

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

Mikhail
13.02.2018
20:30:14
Только если у них есть invoke.
Ну это только по конвенции котлина, в джаве полно функциональных интерфейсов с test, run, consume и т.д.

Я где то читал притчу, где мастер посылал ученика то изучать замыкания то ооп, пока тот не познал дзен

Quantum Harmonizer
13.02.2018
20:31:27
Ну это только по конвенции котлина, в джаве полно функциональных интерфейсов с test, run, consume и т.д.
Да, но какие объекты в таком случае считать функциями? Я бы сказал, что в Java лямбда-выражение или указатель на метод — объект. И всё, в одну сторону.

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

Google
Vitalii
13.02.2018
20:40:24
Mikhail
13.02.2018
20:41:03
Kirill
13.02.2018
20:41:08
Адок там был.
А можно tldr? Или обычный сексизм и прочее?

Quantum Harmonizer
13.02.2018
20:41:26
Т.е. по названию метода?
по наличию с определённым названием и оператором

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

Vitalii
13.02.2018
20:50:29
А можно tldr? Или обычный сексизм и прочее?
tl:dr: всё как обычно + всё скатилось в хохлосрач. Пардон.

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

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

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
У меня общий вопрос, или даже просто интересно мнение каждого: какими решениями для доступа к бд вы пользуетесь? Библиотеки/фреймворки/свои решения какие-то. Всё это в контексте Kotlin/Java конечно же. Может кто успешно переиспользует код доступа к бд между Android и Backend проектами. Интересны любые мысли по этому поводу
между бэком и фронтом ой ли получится переиспользовать что-то кроме DTO. Сейчас добиваю бэк, приступлю к андроиду и скорее всего разве что их и получится перенести + какую-то часть валидации. Остальное весьма специфично, и модели данных отличаются радикально Доступ к БД jOOQ, пробовал еще из плюс-минус котлиновского Ebean, но задолбался с их enchancer-ом. А так – больно уж хорош jOOQ, особенно для DB-first проектов, пока альтернатив ему не видел.

Igor
14.02.2018
07:27:02
Db first ещё и Apache Cayenne, и квери тоже удобно писать. Каен больше на орм похож
ORM – зло. Никогда не знаешь, чем удивит тебя очередная, если пробовать использовать поверх нее какую-нибудь модификацию.

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

Igor
14.02.2018
07:30:24
Хм, а зачем вообще какие-то DSL обертки над эффективным DSL для работы с данными?
Почему DSL? У меня (ладно, на андроиде, но не в этом суть) куча ORM охреневала после подключения SQLCipher, например.

Руслан
14.02.2018
07:30:26
Хм, а зачем вообще какие-то DSL обертки над эффективным DSL для работы с данными?
> над эффективным DSL для работы с данными озвучьте полный список

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

Igor
14.02.2018
07:32:21
Ребят, а чтобы event-sourcing пощупать в Котлин, надо обязательно в akka идти? Попроще способа нет?
Да вроде как нет. Можно ведь и без этого успешно сделать на любом из способов взаимодействия.

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

Phil
14.02.2018
07:36:51
Почему DSL? У меня (ладно, на андроиде, но не в этом суть) куча ORM охреневала после подключения SQLCipher, например.
В смысле, зачем удобный SQL заменять ещё какими-то поделками? Обычно не совсем корректными и менее удобными и все равно требующими знания SQL.

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? как мне оформлять код, следить за типо безопасностью (и безопасностью типов :) )?

Google
Руслан
14.02.2018
07:43:32
Руслан
14.02.2018
07:44:30
А что думаешь насчет hibernate? Там же вроде работа как с коллекциями
Хибер не люблю, не практикую. Мне всяко ближе jooq, cayenne, mybatis (Для справки я писал несколько больших приложений с хибером, и он понятное дело большую часть времени работает, но работать с ним совсем не нравится)

да даже jdbc template кажется лучше

Igor
14.02.2018
07:46:49
Я предпочитаю во вьюшки выносить максимально такую штуку или в хранимки. Ибо даже с DSL выглядит как [ну вы сами поняли что]
> хранимки Вот это печально, что мы уходим с уровня кода в базу, теряя все преймущества своих языков

Igor
14.02.2018
07:47:22
> хранимки Вот это печально, что мы уходим с уровня кода в базу, теряя все преймущества своих языков
Наоборот, мы делаем максимум работы с базой в базе, позволяя коду оставаться максимально абстрагированным от внутренностей оной.

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