
Жабра
03.04.2018
07:56:55
Есть список, в котором могут лежать элементы некоторых типов Type1, Type2 и Type3. Как проверить, есть ли в этом списке элементы второго типа?

Kirill
03.04.2018
07:58:22
.any { it is Type2 }

Жабра
03.04.2018
07:59:36
О, спасибо

Vitalij
03.04.2018
07:59:52
.first { item -> item is Type2 }

Google

Лёша
03.04.2018
07:59:53
arrayOf(1,'a', "str", Unit).any { it is String } вернуло true

Valentin
03.04.2018
08:01:18
не надо доводить до такого in the first place

Жабра
03.04.2018
08:01:31
Так, ещё вопрос: а если я хочу пройти по этому списку, и выбрать все элементы Type2? Но так, чтобы получился List<Type2>

Kirill
03.04.2018
08:01:52
filterIsInstance

Жабра
03.04.2018
08:02:03
Благодарю

Aliaksei
03.04.2018
11:57:52
Спасибо за подгон хорошего видоса!

Ivan
03.04.2018
12:12:57
А кто-нибудь пробовал такое извращение как вызывать саспенд функции из java? Это вообще легально?

Gleb
03.04.2018
12:15:22
пробовал. легально, но бесполезно
чтобы вызвать - нужно откуда-то взять continuation
а взять его можно из котлина

Ivan
03.04.2018
12:20:56

Quantum Harmonizer
03.04.2018
12:22:01

Руслан
03.04.2018
12:23:02
Можно завернуть в future и использовать как обычную CF.
Т.е. в Kotlin пишем:
fun adapt() = future { suspendFun() }
из джавы будем видеть метод который возвращает CF

Google

Ivan
03.04.2018
12:27:03

Руслан
03.04.2018
12:28:37
Да, это круто, можно писать код на котлине с корутинами и удобно интегрироваться с любыми существующими асинхронными примитивами из других языков и фреймворков.

Nikita
03.04.2018
16:21:07
Друзья подскажите пожалуйста. Возникла потребовность писать java совместимый код, столкнулся с FunctionalInterface который позволяет оборачивать в лямду со стороны джава. И только сейчас заметил что этого не происходит для kotlin потребителя интерфейса. Ну т.е. до этого не возникало потребности писать интерфейсы в 1 функцию или же разруливалось лямбдами на месте. Так вот вопрос - могу ли я в котлине написать обычный интерфейс с одним методом, и в котлин коде использовать ее как лямбду, без объявления object и переолпределения метода (без создания анонимного класса напрямую)

Alexander
03.04.2018
16:24:33
Нет. Там на трекере есть issue с сотней голосов в пользу такой возможности, но пока нельзя.

Nikita
03.04.2018
16:25:20

Alexander
03.04.2018
16:25:48
В Котлин обязательно использовать типы-функции
Не удобно искать с телефона. Это называется SAM.

Nikita
03.04.2018
16:27:35

Жабра
03.04.2018
16:35:21

Руслан
03.04.2018
16:36:41
Не нравится что будет со стороны джава Function1..22?

Bogdan
03.04.2018
16:37:05

Руслан
03.04.2018
16:37:26
Так в пишет же API на котлине

Vladimir
03.04.2018
16:43:17

Bogdan
03.04.2018
16:45:13
Вот да, это жуть
ну а если сделать в котлине функцию, просто прийдется возращать Unit.INSTANCE

Kylych
03.04.2018
16:49:08

Alexander
03.04.2018
16:52:11
Function1 на Яве будет как раз функциональным интерфейсом. Так что если весь API на Котлин, то все в порядке.

Alexander
03.04.2018
16:54:31
это оператор из reactive x. на джаве реализация rx java, rx kotlin тоже есть вроде. смотря для чего это тебе нужно. ради одного оператора тащить весь rx врядли хорошая идея

Kylych
03.04.2018
16:57:20
да, не хочу тянуть либу. по этому думал, может тут подскажут
как можно реализовать с помощью котлина

Google

Alexander
03.04.2018
17:02:29
http://codegists.com/snippet/kotlin/debouncekt_elizarov_kotlin похоже на то

Kylych
03.04.2018
17:04:17
ок, спасибо

Danil
03.04.2018
17:27:44
Когда в место try with resource используешь .use { } file.close() же можно не использовать?

Quantum Harmonizer
03.04.2018
17:28:19

Danil
03.04.2018
17:28:44
Окей, пасибо

Quantum Harmonizer
03.04.2018
17:30:07
ScheduledExecutorService и 20 строчек кода по запостиванию и отмене фьючи.

Pavel
03.04.2018
18:27:54
Парни, а есть кто считает что kodein говно и использует какие-то другие di?

Oleg
03.04.2018
18:30:30

Vitalii
03.04.2018
18:30:36

Pavel
03.04.2018
18:31:25
@dmitvitalii А ты обвязку именно как di, или просто как сервис локатор используешь?
@dmitvitalii ?

Igor
03.04.2018
20:20:30

Pavel
03.04.2018
20:32:00

Quantum Harmonizer
03.04.2018
20:32:19
DI не нужен, если нет Android.

Anton
03.04.2018
20:32:28

Pavel
03.04.2018
20:33:48
Ну типа di подменяет сервисы в тестах. Нет тестов, можно di заменить на сервис локатор и готово. Что не так?

Quantum Harmonizer
03.04.2018
20:34:30
Тестировать нельзя не тот код, который не использует DI, а тот, который хреново написан.

Google

Anton
03.04.2018
20:35:51

Pavel
03.04.2018
20:36:30

Quantum Harmonizer
03.04.2018
20:37:01

Anton
03.04.2018
20:37:19

Pavel
03.04.2018
20:37:55

Anton
03.04.2018
20:38:01
И даже postConstruct и preDestroy можно вызвать. Зато все будет в твоем приложении очевидно

Vitalii
03.04.2018
20:39:05

Pavel
03.04.2018
20:44:51
?
Quantum а если не di, как вы получаете доступ к сервисам? Где их храните?

Quantum Harmonizer
03.04.2018
20:46:56

Pavel
03.04.2018
20:47:46
Каждый контроллер отдельно будет создавать себе сервисы?

Quantum Harmonizer
03.04.2018
20:48:25

Pavel
03.04.2018
20:49:01
Обсудить бы это в контексте Андройда...

Artem
03.04.2018
20:49:42

Quantum Harmonizer
03.04.2018
20:51:11

Artem
03.04.2018
20:51:33
Думаю успели прочитать)

Quantum Harmonizer
03.04.2018
20:51:56

Artem
03.04.2018
20:52:14
Ну типа флуд(((
На пол экрана картинка. В оффтоп чат закину

Google

Igor
03.04.2018
21:01:03

Pavel
03.04.2018
21:01:52
Чтобы мокать сервисы

Anton
03.04.2018
21:04:00
А почему нельзя мокать просто передавая моки в конструктор?

Igor
03.04.2018
21:04:13
Оу, моки это само большое зло - много кода на верификацию, плюс закладывание на иплементацию, а не контракт

Руслан
03.04.2018
21:04:42
как так написать логику стандартного rest сервиса (запрос -> база -> ответ) используя чистые функции

Igor
03.04.2018
21:08:58
Это сложно, я же мобильный-девелопе. Бекенд если и писал, то только на F#

Pavel
03.04.2018
21:09:23

Anton
03.04.2018
21:10:25
Да, у вас там сложнее. Но я думаю что можно весь граф объектов держать отдельно.

Даниил
03.04.2018
21:20:04
моя претензия к кодеину в первую очередь в том что он не тайпсейф
в отличие от dagger/lightsaber например

Bogdan
03.04.2018
22:58:22
а кто знает как работает List.toTypedArray() ?

Kirill
03.04.2018
23:01:18

Bogdan
03.04.2018
23:02:08
это мало что обясняет, но я вроде понял, он вызывает джавовский метод, эго и нужно смотреть

Тимур
04.04.2018
05:56:31
Оно делает тоже самое, как если вручную написать list.toArray(new MyClassT[0])
Через inline подставляет этот код из функции. Для понимания надо почитать как работают reified generics, и дальше все станет очевидно из просмотра исходника toTypedArray.