Size: a a a

Kotlin Community

2020 September 12

AZ

Alexander Zalutskiy in Kotlin Community
Но тут надо держать баланс между предусмотреть все и сделать быстро. Ваш кейс кажется решает только вопрос скорости, но плохо расширяется и может создать проблемы
источник

MK

Mederbek Kanatbekov in Kotlin Community
привет всем, с чего лучше начать, с  Java или kotlin?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Zalutskiy
Но тут надо держать баланс между предусмотреть все и сделать быстро. Ваш кейс кажется решает только вопрос скорости, но плохо расширяется и может создать проблемы
я понимаю, круто было бы писать вот так

class Test {
   val propertyObservable = ...
   val test by propertyObservable
}

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

а можно просто заюзать готовый

class Test {
   val propertyObservable = Observable<...>()
   val test by observable {
       propertyObservable.next(it)
   }
}
источник

с#

саша сок #KotlinGang... in Kotlin Community
но вообще можно просто создать обертку для обычного обсервабл и тогда будет тоже потокобезопасно
источник

AN

Alexander Nozik in Kotlin Community
Mederbek Kanatbekov
привет всем, с чего лучше начать, с  Java или kotlin?
С чтения информации по чату
источник
2020 September 13

МВ

Максим Воротынский... in Kotlin Community
Привет,
В C# есть IQueriable у которого есть методы Select (map), Where (filter) и т.д. На нем строятся sql запросы. Если написать table.Where(x => x.Age > 5).Take(1), то это превратиться в 1 sql. Есть ли аналог такого в Kotlin?
источник

AN

Alexander Nozik in Kotlin Community
Максим Воротынский
Привет,
В C# есть IQueriable у которого есть методы Select (map), Where (filter) и т.д. На нем строятся sql запросы. Если написать table.Where(x => x.Age > 5).Take(1), то это превратиться в 1 sql. Есть ли аналог такого в Kotlin?
Прямо встроенного LINQ нет, но есть много вариантов всяких query-билдеров
источник

МВ

Максим Воротынский... in Kotlin Community
Видел Iterable, но это не то, т.к. оно не ленивое.
Sequence ленивое, но я не понял, что будет, если я запрос бд скастую к Sequence
источник

МВ

Максим Воротынский... in Kotlin Community
У меня ktor + exposed
источник

AN

Alexander Nozik in Kotlin Community
Например в Exposed: https://github.com/JetBrains/Exposed
источник

AN

Alexander Nozik in Kotlin Community
Максим Воротынский
У меня ktor + exposed
так там вроде уже есть query-билдеры
источник

МВ

Максим Воротынский... in Kotlin Community
Хочется к чему-то дефолтному скастовать
источник

AN

Alexander Nozik in Kotlin Community
Максим Воротынский
Хочется к чему-то дефолтному скастовать
Еще раз говорю, прямо в языке LINQ нет. Оно не нужно в языке, так как любой генератор легко делается самостоятельно на расширениях. Пример - как раз Exposed. Если вы хотите работать не с базой данных, а уже с коллекцией, то там вся мощь стандартной библиотеки в вашем расопряжении
источник

AN

Alexander Nozik in Kotlin Community
Alexander Nozik
Еще раз говорю, прямо в языке LINQ нет. Оно не нужно в языке, так как любой генератор легко делается самостоятельно на расширениях. Пример - как раз Exposed. Если вы хотите работать не с базой данных, а уже с коллекцией, то там вся мощь стандартной библиотеки в вашем расопряжении
Разница в том, что в базу вам надо сначала запрос сформировать, а потом уже в языке работать с результатом. Вот для формирования запроса есть билдер. Для результата уже - фильтры, мапы и что угодно
источник

МВ

Максим Воротынский... in Kotlin Community
билдер из exposed?
источник

AN

Alexander Nozik in Kotlin Community
Максим Воротынский
билдер из exposed?
в exposed много всего, но в том числе есть билдеры для SQL, в простонародье именуемые DSL.
источник

МВ

Максим Воротынский... in Kotlin Community
А если я напишу Users.selectAll().map { toUser(it) }, затем сделаю каст к Iterable и на нем take(1), то сколько пользоваетелей загрузятся из базы? 1 или все?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Максим Воротынский
А если я напишу Users.selectAll().map { toUser(it) }, затем сделаю каст к Iterable и на нем take(1), то сколько пользоваетелей загрузятся из базы? 1 или все?
по любому из базы все загрузятся, уже сразу после selectAll()
источник

с#

саша сок #KotlinGang... in Kotlin Community
Максим Воротынский
А если я напишу Users.selectAll().map { toUser(it) }, затем сделаю каст к Iterable и на нем take(1), то сколько пользоваетелей загрузятся из базы? 1 или все?
можно Users.selectAll().limit(...).map { ... }
источник

МВ

Максим Воротынский... in Kotlin Community
Не так спросил
Если сделать каст к Iterable, то запрос выполняется в этот момент?
источник