@kotlin_lang

Страница 618 из 982
Жабра
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
пробовал. легально, но бесполезно чтобы вызвать - нужно откуда-то взять continuation
Т.е. на джавке - это просто обычная функция ничем не примечательная?

Quantum Harmonizer
03.04.2018
12:22:01
Т.е. на джавке - это просто обычная функция ничем не примечательная?
Сигнатура другая. Добавляется последний параметр с continuation, а возвращает Object.

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

Google
Руслан
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 с сотней голосов в пользу такой возможности, но пока нельзя.

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

Не удобно искать с телефона. Это называется SAM.

Nikita
03.04.2018
16:27:35
Не удобно искать с телефона. Это называется SAM.
нашел - https://youtrack.jetbrains.com/issue/KT-7770 вроде оно, спасиб

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

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() же можно не использовать?

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?

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

@dmitvitalii ?

Igor
03.04.2018
20:20:30
Парни, а есть кто считает что kodein говно и использует какие-то другие di?
Kidein никогда на юзал, а пробовал koin - вроде норм. Хотя до сих пор уверен, что DI в принципе не нужен.

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
Ну типа di подменяет сервисы в тестах. Нет тестов, можно di заменить на сервис локатор и готово. Что не так?
Сервис-локатор - это тот самый god object который передается во все классы? Мы не путаем теплое с мягким?

Pavel
03.04.2018
20:36:30
в тестах создать один граф объектов, в проде — другой.
Если у тебя нет di, тебе придется писать свой di, и имплементить свою подмену. Так что тот же di только свой.

Anton
03.04.2018
20:37:19
Если у тебя нет di, тебе придется писать свой di, и имплементить свою подмену. Так что тот же di только свой.
Ну, инициализировать класс и построить свой граф объектов руками это совсем просто, особенно в Kotlin.

Pavel
03.04.2018
20:37:55
Сервис-локатор - это тот самый god object который передается во все классы? Мы не путаем теплое с мягким?
Не обязательно god object. Я подразумеваю любую логику, которая позволяет "находить сервисы". Вот кодеин - я бы сказал что скорее сервис-локатор, чем di.

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

Pavel
03.04.2018
20:44:51
?

Quantum а если не di, как вы получаете доступ к сервисам? Где их храните?

Quantum Harmonizer
03.04.2018
20:46:56
Quantum а если не di, как вы получаете доступ к сервисам? Где их храните?
[Стандартный ответ] создаю эти «сервисы» через конструктор, передавая им все зависимости.

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

Quantum Harmonizer
03.04.2018
20:48:25
Каждый контроллер отдельно будет создавать себе сервисы?
Не использую контроллеры, они — чистая процедурщина.

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

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
DI не нужен, если нет тестов.
Стремный аргумент. Зачем в тестах DI?.. DI не нужен, потому что можно писать логику на pure-functions

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
Стремный аргумент. Зачем в тестах DI?.. DI не нужен, потому что можно писать логику на pure-functions
Мне нравится вот эта идея, мог бы ты показать пример такого приложения на котлине?

как так написать логику стандартного 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
Парни, а есть кто считает что kodein говно и использует какие-то другие di?
вроде тут уже обсуждалось, есть мнение что DI-контейнеры вообще не нужны

моя претензия к кодеину в первую очередь в том что он не тайпсейф

в отличие от dagger/lightsaber например

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

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

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

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