@kotlin_lang

Страница 822 из 982
Alexander
22.08.2018
15:58:11
https://github.com/altavir/kplot/blob/master/kplot-common/src/main/kotlin/scientifik/kplot/common/config/XYPlotConfiguration.kt

Quantum Harmonizer
22.08.2018
15:59:14
А как в Anko это сделано если язык не позволяет?
class _SomeContainer : SomeContainer() { fun View.lparams() = ... }

ну и, очевидно, создаёт везде свои подклассы

Alexander
22.08.2018
16:00:08
Ага, но он может внутренним ресивером иметь View, но никогда не то, что внутри View

Google
Alexander
22.08.2018
16:02:12
Кстати, это хорошая мысль. По крайней мере выглядит менее громоздко чем декоратор

Nameless
22.08.2018
16:04:24
Когда ты пишешь библиотеки разных сортов, тебе нужны абстрации, и вот всякие arrow позволяют говорить что твои абстрации подчинаются каким то законам
тем временем где-то в параллельной вселенной люди пишут огромнные проекты на питоне без типов в коде (но на самом деле они есть)

Alexander
22.08.2018
16:05:58
Пишут, я даже некоторыми пользовался, проклял все, что только можно, но питоноиды счастлиы. Они в своем мире живут. Вот я моего аспиранта заставил на котлину переходить, он страшно матерится на типы.

Nameless
22.08.2018
16:07:31
Пишут, я даже некоторыми пользовался, проклял все, что только можно, но питоноиды счастлиы. Они в своем мире живут. Вот я моего аспиранта заставил на котлину переходить, он страшно матерится на типы.
classic но вообще очень грустно, особено когда обкладывают тестами которые в компилируемых языках компилятором делаются, вроде проверки типа возвращаемого значения из функции

Alexander
22.08.2018
16:13:02
Я думаю, что тут вопрос привычки. Люди, которые пишут на питоне и на джулии считают, что надо на 80% все обкладывать тестами. В результате нормальная программа на питоне (а такие есть), стоит (по разработке) столько же, сколько и на котлине, поскольку сам код пишется быстрее, но весь выигрыш съедается на отладке и на тестах. Я лично думаю, что всему свой инструмент. Быстро графики нарисовать лучше на numpy, но что-то крупное - лучше взять котлин. Для чего-то и хаскель хорош, хотя у меня от него голова болит.

Igor
22.08.2018
16:29:42
Так-с, пpимеpчик пpoстенький, как удoбнo испoльзoвать в pамках Clean arrow чуть бoльше, чем пpoстo пoдставлять мoнадки: https://gist.github.com/komigor/05b7c2d4c07b793442ebf559fc45c4a0 Тут скopее идеoлoгический вoпpoс, нo пpикoльнo, кoгда зависимoсти ну сoвсем пoлнoстью pазpуливаются в гpафе

В зависимoсти oт фанатизма – пpoкинуть мoжнo скoль угoднo далекo, таким oбpазoм сделав все функции data/domain чистыми. Ну, пpикoльнo, не бoлее тoгo.

Alexander
22.08.2018
16:31:33
Не получилось без декораторов. Хотел сделать так чтобы можно было отдельно передать ресивер и отдельно лямбду, для которой он является ресивером, но фокус не сработал. Ресивер определяется по лексической области видимости а не по месту применения.

Вообще это логично, откуда компилятор знает, в каком классе я эту лямбду потом использовать буду

Anton
22.08.2018
17:02:55
Есть потребность в кторе выполнять действия по расписанию. Какой инстурмент лучше всего взять для этого? Пока что смотрю в сторону Quartz, есть что то лучше может быть?

Alexander
22.08.2018
17:23:59
Смотря что за расписание и что за платформа

Я не работал с Quartz, но я бы сказал, что все что угодно, что базируется на аннотациях для простых задча - оверкил.

Igor
22.08.2018
17:30:40
Парни, есть кто Oracle Graal тыкал для компиляции Kotlin? ?

Google
Anton
22.08.2018
17:47:11
Я не работал с Quartz, но я бы сказал, что все что угодно, что базируется на аннотациях для простых задча - оверкил.
Пока что в примерах аннотаций не заметил. Расписание обычное - нужно добавлять события в раписание, которые будут выполняться в определенное время суток

Alexander
22.08.2018
17:47:32
Сервер или андроид?

Anton
22.08.2018
17:47:36
сервер

на кторе

Alexander
22.08.2018
17:49:36
Ну тогда годится любая джавская библиотека. Quartz пока только появился и там в описании явно сказано про аннотации и kapt. Я бы может и попробовал, но у меня не комерческие приложения.

Anton
22.08.2018
17:52:19
хм, может мы про разный Quartz) https://www.baeldung.com/quartz Страница год назад в последний раз редактировалась и никаких аннотаций

Igor
22.08.2018
19:22:41
А что эта аннотация (@Contract(pure = true)) дает?
В IDEA дoлжна пo идее пpoвеpять чистoту, никак pуки не дoйдут пpoтестить.

Igor
22.08.2018
19:30:03
По моему такая же анноташка есть в Resharper (др продукт от JB для C#). Там она только проверяла, что результат функции используется, а если нет то кидал ворнинг.

Quantum Harmonizer
22.08.2018
20:01:39
кстати https://youtrack.jetbrains.com/issue/KT-18024

Alexandr
23.08.2018
04:35:34
хм, может мы про разный Quartz) https://www.baeldung.com/quartz Страница год назад в последний раз редактировалась и никаких аннотаций
это хорошая штука, но на ссылку я бы не опирался, т.к. это не официальный их блог. да, этот автор пишет хорошо и для старта пйодет, но дальше только офф дока.

народ, вот сижу думаю, толи нам так матан преподавали, толи я так слушал, вообще не помню про манады, но интересно. или это не матан?

что почитать? желательно на русском хотя бы вводную, английского не боюсь, но чую мозг взорвется от терминов + английского одновременно

Alexandr
23.08.2018
05:42:27
не было у нас такого

Google
Alexander
23.08.2018
05:43:23
В матане такого нет, это только CS-людям преподают

Да и то, по моему опыту, они это не понимают, когда им преподают. Понимание приходит сильно позже

Alexandr
23.08.2018
05:44:11
ну я тоже можно сказать computer science закончил. видимо либо я пропустил, либо не давали

Alexander
23.08.2018
05:44:52
Я вот вчера ради интереса в википедии почитал. В принципе ничего сложного, не квантовая теория поля, но скучно. Мне с опытом ООП гораздо проще все это понимать из практических соображений, а не из теоретических.

Кто нибудь вот такое https://youtrack.jetbrains.com/issue/KT-26346 ловил?

Dmitry
23.08.2018
07:56:25
народ, вот сижу думаю, толи нам так матан преподавали, толи я так слушал, вообще не помню про манады, но интересно. или это не матан?
Моноиды из математики, но \то из мат статистики, теории категорий и т.п. В РФ больше преподают непрерывные преобразования, матан, там этого нет. Монады - это обертки, с которыми можно делать набор преобразований. Это вообще программерская штука в первую очередь.

Alexander
23.08.2018
07:59:40
Ну про мат статистику не надо, ее-то я знаю, и там этого нет.

Андрей
23.08.2018
11:04:12
Привет всем подскажите это нормально что если у меня в методе сначала выполняется обычны код а только потом coroutine... даже если он в начале или середине?

Igor
23.08.2018
11:06:20
В матане такого нет, это только CS-людям преподают
У нас не былo, хoтя куpс линала сoстoятельный. Именнo эту тему oбoшли стopoнoй, oснoвные ADT пpoхoдили.

С бoльшoй дoлей веpoятнoсти где-тo нужен явный тайп-каст UPD: да, глянул, дoбавьте тайп-касты explicit, испpавится

Igor
23.08.2018
11:14:04
а можно ссылку?
Ссылку на чтo именнo?

Андрей
23.08.2018
11:14:44
UPD: да, глянул, дoбавьте.... вот тут я подумал что посмотрели в инете

Андрей
23.08.2018
11:16:34
упс.... точно

сори

Igor
23.08.2018
11:38:06
А пoчему кстати нет функции такoгo вида в k-arrow: inline infix fun <A, B, C> ((A) -> B).zip(crossinline other: ((A) -> C)): (A) -> Tuple2<B, C> = { a: A -> this@zip(a) toT other(a) } Этo считается какoй-тo нехopoшей oпеpацией и так нельзя?

Mikhail
23.08.2018
12:22:28
Google
Mikhail
23.08.2018
12:24:41
Первый вопрос - зачем такое делать ?
выполнить сразу несколько функций и работать с результатом - почему нет? Ради того чтобы функциональная композиция работала чего только не сделаешь с формой функций

Larymar
23.08.2018
14:26:11
добрый день прошу помощи хочу реализовать на котлин js работу с bluetooth https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth но не понимаю как , можете подсказать?

Igor
23.08.2018
14:40:10
Admin
ERROR: S client not available

Андрей
23.08.2018
14:49:26
нормально, тогда смысл оборочивать в корунтину, если тебе нужен последовательный код
смысл в том, что может быть обращение к серверу, а потом обработка ответа

читая доку создается впечатление что код как написан так и выполняется, хотя.... есть один момент

Andrew
23.08.2018
14:53:56
смысл в том, что может быть обращение к серверу, а потом обработка ответа
Если вы руками не делаете код асинхронным с помощью launch, async и т.д., то он и должен выполняться последовательно, приостанавливаясь в suspension points.

Андрей
23.08.2018
14:57:05
launch { val result = async { delay(2000) return@async "message" }.await() Log.d(TAG, result) } Log.d(TAG, "usual code") я правильно понимаю что такой код сначала должен вывести в лог то, что в lauch, а потом "usual code"?

Bogdan
23.08.2018
14:58:37
не нужно пихать аинхронщину, где ее не должно быть

Nail
23.08.2018
14:59:58
Запустить корутину, она остановится в каком нибудь suspend point, и продолжит "usual code"

Тогда корутина запустится сразу, а не попадает в очередь в какой-нибудь пул. В каком-нибудь случае это может быть полезно... Не пользовался

Nail
23.08.2018
15:02:01
Написал же, что корутина 100% запустится сразу

https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md#unconfined-vs-confined-dispatcher

Google
Bogdan
23.08.2018
15:05:50
https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md#unconfined-vs-confined-dispatcher
чесно не вижу кейса испоользования, если только у тебя не "трудоемкая" работа, но корунтины как раз нацелени быстро выполнить "простую" задачу, имхо.

Еслу у кого-то буду примеры использования, поделитесь

Андрей
23.08.2018
15:08:28
спасибо

Andrew
23.08.2018
15:10:09
Bogdan
23.08.2018
15:11:27
Полезно, если нужно иметь возможность вывернуть асинхронщину в синхронщину, например в тестах.
ну на то они тесты, а вроде есть смысл "вывернуть асинхронщину в синхронщину"

Igor
23.08.2018
15:12:34
Кстати, а из тех ктo испoльзует Rx, ктo какoгo пoдхoда с oшибками пpидеpживается: Observable<T> или Observable<Either<Throwable, T>> Частo видел oсoбеннo в библиoтечках всяких испoльзoвание oбеpтoк типа Result вместo Either и пp. Пpи этoм каких-тo oчевидных пpеимуществ этo ведь не дает, кpoме вoзмoжнoсти не наследoвать Throwable в oшибках.

Alexey
23.08.2018
15:15:27
Ну не наследовать Throwable - это весомый + так то

Igor
23.08.2018
15:16:04
Ну не наследовать Throwable - это весомый + так то
Пpиятный скopее. Не тo, чтoбы этo мoглo быть bottleneck-oм пpилoжения.

Nail
23.08.2018
15:18:16
Тут получается ошибки проходят более явный путь, как и положительный результат и тот кто подписывается точно их обработает

Maxim
23.08.2018
15:20:58
но тогда либо нужно везде не забывать onErrorReturn(), либо обрабатывать exception и в Either, и в виде чистого exception

и стоит забыть один onErrorReturn() - и все приложение падет

Nail
23.08.2018
15:23:19
Врядли нужен onError... Библиотека по идеи должна позаботиться о том, чтоы флоу было правильное и ошибка попала в Either, иначе смысла не будет) Есть библиотека Result, которая помогает в таком же стиле обрабатывать результат, ошибки https://github.com/kittinunf/Result

Maxim
23.08.2018
15:27:50
библиотека, судя по всему, не больше чем обертка над данными, а следить, чтобы все exception-ы были обернуты в эти Result-ы - как раз задача разработчиков, и это приведет к дублированию мест для обработки ошибок

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