@kotlin_lang

Страница 769 из 982
Egor
24.07.2018
10:56:17
da, eto jesko

Роман
24.07.2018
10:57:32
ческо?

Andrey
24.07.2018
10:57:41
это плохое ветвление? Если да то как решить траблу?
Так какую траблу решать-то? Обычно обработку исключений делают так: если UnknownHostException, то <код для обработки UnknownHostException> если SocketException, то <код для обработки SocketException> ... иначе <код обработки для всех остальных случаев>

Роман
24.07.2018
10:58:22
ну я и говорю если это плохое ветвление

Google
Andrey
24.07.2018
11:07:57
ну я и говорю если это плохое ветвление
Не бывает плохих и хороших ветвлений. Ветвление отражает некоторую логику, решающую некоторую проблему. Вот я и пытаюсь понять, для какой проблемы вам понадобилось проверить, что тип исключения не принадложит некоторому набору типов BTW, конкретно ваше условие можно переписать так (не уверен, что это особо лучше, да и работать будет только на Kotlin под JVM): if (e.cause?.javaClass !in setOf<Class<*>?>(UnknownHostException::class.java, SocketException::class.java, ConnectException::class.java)) { }

Andrey
24.07.2018
11:09:10
корректно работает только с финальными классами
Согласен. Всё время после Haskell забываю, что в Kotlin и Java типы (классы) могут ещё наследоваться :)

Для не финальных классов будет так (должно работать не только для JVM): if (!setOf(UnknownHostException::class, SocketException::class, ConnectException::class).any { it.isInstance(e.cause) }) { }

Andrey
24.07.2018
11:18:40
this :)
Не совсем. достаточно просто ::class . ::class.java не заработает не в JVM реализации.

Bogdan
24.07.2018
11:34:48
Mikhail
24.07.2018
11:36:20
Roman
24.07.2018
11:37:13
а не пробовал инвертировать?when { is UnknowHostException, is SocketException, isConnectException -> else -> }
сделал так if (!(e.cause is java.net.UnknownHostException || e.cause is java.net.SocketException || e.cause is java.net.ConnectException)) { logger.error(e) { message } }

dimiii
24.07.2018
11:45:23
сделал так if (!(e.cause is java.net.UnknownHostException || e.cause is java.net.SocketException || e.cause is java.net.ConnectException)) { logger.error(e) { message } }
IO - проверять что не IOException java.io.IOException java.net.SocketException java.net.ConnectException java.io.IOException java.net.UnknownHostException

Igor
24.07.2018
12:03:52
Куда не нажмёшь там, ничего не изменяется, код полностью красный и отказывается запускаться. В чём проблема? Другие проекты работают

Google
Bogdan
24.07.2018
12:04:28
Gradle ? У меня такое было Configure помагало

Igor
24.07.2018
12:04:34
Maven

Konstantin
24.07.2018
12:05:12
а в котле как то можно динамически по именам к полям обращаться?

Igor
24.07.2018
12:05:17


Bogdan
24.07.2018
12:05:21
Maven
А там котлин настроен, проблема скорей там

Igor
24.07.2018
12:05:32
То есть?

Konstantin
24.07.2018
12:05:35
например если есть мапа с ключами-строками, могу я по ним искать названия полей в data-class ? и заполнять их

Bogdan
24.07.2018
12:06:13
То есть?
Ну в мавене прописывается плангин и пару настроек

Igor
24.07.2018
12:06:29
Сейчас попробую, спасибо

Andrew
24.07.2018
12:07:08
например если есть мапа с ключами-строками, могу я по ним искать названия полей в data-class ? и заполнять их
Map можно использовать как делегат. val data = mapOf("a" to 1, "b" to 2) val b by data println(b) напечатает двойку.

Konstantine
24.07.2018
12:07:15
Bogdan
24.07.2018
12:07:23
Сейчас попробую, спасибо
Создай пустой мавен проект и посмотри там

Не понятно, что ты хочешь, но у мапы есть список всех ключей
Он по этому списку хочет пройтись и исходя из названия получить проперти

Konstantin
24.07.2018
12:09:11
Не понятно, что ты хочешь, но у мапы есть список всех ключей
хочу не переписывать каждый раз кучу методов чтобы прокинуть 1 параметр

передавать просто мап, в источнике заполнять ее, опционально, в будущем добавляя только по ключам, в назначении использовать генерик-метод какой нить который будет дтошку заполнять и чтобы это не переписывать

Ivan
24.07.2018
12:09:53
Через отражения опять же, поиск по declaredMemberProperties

Konstantin
24.07.2018
12:10:16
т.е. при добавлении новых свойст писать только в дата-классе и в источнике где мапу заполняю, а остальное пусть остается как есть... типа того

Konstantin
24.07.2018
12:11:28
ага, лан, пасибо почитаю

Google
Bogdan
24.07.2018
12:12:39
Map можно использовать как делегат. val data = mapOf("a" to 1, "b" to 2) val b by data println(b) напечатает двойку.
Хотя для дата класса может не сработать, ему нужно в конструктор значения передавать

Konstantin
24.07.2018
12:13:30
copy

Andrew
24.07.2018
12:16:04
Да, для дата-класса как есть не прокатит, увы.

Alexey
24.07.2018
12:18:07
Почему бы просто в команьоне не написать фабрику: Map<String, Any> => YoutDataClass

Konstantin
24.07.2018
12:21:54
https://kotlinlang.org/docs/reference/delegated-properties.html#storing-properties-in-a-map

вот это нашел, должно помочь

Konstantine
24.07.2018
12:26:42
Map<String, T> -> YourDataClass!

dimiii
24.07.2018
12:38:57
Alexey
24.07.2018
12:46:26
Igor
24.07.2018
12:57:41
Ого, это волшебно! Скромное очарование котлина
Не хотел бы придираться, но это реально "волшебство". В компиляторе пропилены дырки для операторов getValue/iterator и можно обобщенно добавлять поведение без наследования. А мы как юзеры не можем так делать (пока).

Илья
24.07.2018
15:04:23
Привет! подскажите, пожалуйста - есть интерфейс с функцией, в которой есть параметр с дефолтным non-null аргументом. В Котлине есть возможность средствами языка вызывать функцию с дефолтным параметром, если аргумент == null, и с самим аргументом, если он не null?

Alexey
24.07.2018
15:10:33
Тут скорее будет правильно сделать метод с null и в нём вызывать уже тот который не null с дефолтным параметром

не js всё таки

Илья
24.07.2018
15:12:08
Вариантов много, просто хотел узнать, нет ли в языке такой возможности =)

Жабра
24.07.2018
15:54:57
https://tproger.ru/articles/kotlin-magic-functions/ мб кому-то будет полезно

Alexander
24.07.2018
17:01:20
Да скорей всего, isInstans
Не нужно. Проверки типов и все простые рефлекты присуствуют из коробки. Дополнительная библиотека нужна для всяких тонких манипуляций с типами.

Kirill
24.07.2018
17:34:59
Кто-то использовал socket io вместе с ктором или спрингом?

Веб сокеты на главной странице, а о socket io будто никто не слышал

Quantum Harmonizer
24.07.2018
17:36:14
Google
Kirill
24.07.2018
17:36:33
Сокеты + поллинг

Quantum Harmonizer
24.07.2018
17:38:05
вебсокеты?

Kirill
24.07.2018
17:38:19
Да

Alexander
24.07.2018
17:43:40
https://tproger.ru/articles/kotlin-magic-functions/ мб кому-то будет полезно
>>Но можно и вовсе убрать аргументы у лямбда-функции, если они не нужны: Гонят же, нет?

Admin
ERROR: S client not available

Quantum Harmonizer
24.07.2018
18:39:10
У котлина какие-то проблемы с пониманием member extension operator fun invoke или это только у меня?

member — ok, extension — ok, на стыке — не ок

ага, порядок ресиверов имеет значение

Жабра
24.07.2018
18:44:10
Quantum Harmonizer
24.07.2018
18:46:31
А можно пример?
open class DslHost { operator fun DslElement.invoke() = TODO() } class DslElement { operator fun DslHost.invoke() = TODO() } ... class Wtf : DslHost { val element = DslElement() val lookAtMe = element() }

Quantum Harmonizer
24.07.2018
18:51:10
Кхм, извращение какое-то.
да, пишу на пределе возможностей языка, самому страшно https://gist.github.com/Miha-x64/319313c1076fbfcccaf948d76c0c40f9

Igor
24.07.2018
19:06:03
Quantum Harmonizer
24.07.2018
19:06:14
Кузьма
24.07.2018
19:21:34
Всем привет, можете подсказать как отфильтровать коллекцию по максимальным элементам?

Кузьма
24.07.2018
19:22:09
Если есть 5 5 5 3 2 1, То результатом должно быть 5 5 5

В функциональном стиле

Google
Кузьма
24.07.2018
19:22:35
Какой-то хитрый filter

Quantum Harmonizer
24.07.2018
19:22:37
Если есть 5 5 5 3 2 1, То результатом должно быть 5 5 5
сначала найти максимум, потом посчитать их количество

Dumitru
24.07.2018
19:23:06
lst.filter{ it == lst.max() }

Как-то так

Quantum Harmonizer
24.07.2018
19:24:06
lst.filter{ it == lst.max() }
квадратичная сложность, попытка присваивания вместо сравнения

Quantum Harmonizer
24.07.2018
19:24:45
Почему квадрат?
потому что на каждый элемент оно пойдёт искать максимум

Dumitru
24.07.2018
19:24:57
Ну можно вынести это

Кузьма
24.07.2018
19:24:59
Сколько раз вычислится lst.max()

Dumitru
24.07.2018
19:25:03
Не в этом суть была

Кузьма
24.07.2018
19:26:05
А функция свёртки мне не поможет?

Quantum Harmonizer
24.07.2018
19:26:39
А функция свёртки мне не поможет?
тебе на выходе же коллекция нужна?

Кузьма
24.07.2018
19:26:48
Да

Quantum Harmonizer
24.07.2018
19:27:02
можно, конечно, но будет страшно

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