@kotlin_lang

Страница 838 из 982
Va
29.08.2018
18:34:06
Тогда это не Component<T1,T2,T3> а Component<Int, чтото что-то>

Quantum Harmonizer
29.08.2018
18:34:38
@Harmonizr может реально троль ?
да вроде давно тут, общались когда-то

Google
Va
29.08.2018
18:34:46
Реифайд будет подразумевать, что ты заранее знаешь тип.

Bogdan
29.08.2018
18:34:50
Тогда это не Component<T1,T2,T3> а Component<Int, чтото что-то>
тогда бы дженерики нафиг не нужны были

Quantum Harmonizer
29.08.2018
18:35:24
Тогда это не Component<T1,T2,T3> а Component<Int, чтото что-то>
можно написать функцию типа <T> Component<*, *, T>.whatever(t: T, blah...), будет работать

Bogdan
29.08.2018
18:35:38
Бинго
а ты гошник

Mikhail
29.08.2018
18:36:24
Ловите гофера!

Va
29.08.2018
18:36:54
можно написать функцию типа <T> Component<*, *, T>.whatever(t: T, blah...), будет работать
То есть, для всех классов, третий компонент которого является T ты делаешь действие, например, мап ?

Bogdan
29.08.2018
18:37:14
кстати к слову, вы уже вкурсе слухов что в го (следущей можорной версии, не помню точно какой) введут дженерики

Andrew
29.08.2018
18:37:33
а ты гошник
Прекращай на личности переходить, ты своим поведением дискредитируешь плюсы паттерн матчинга :)

Quantum Harmonizer
29.08.2018
18:37:34
Google
Quantum Harmonizer
29.08.2018
18:38:21
а он тролит, ток не говорите что я расист)
я тоже уже начинаю в это верить

Va
29.08.2018
18:38:22
для любого класса, у у которого есть третий компонент
Окей, это многое меняет, но вопрос "зачем" остаётся открытым

Mikhail
29.08.2018
18:39:07
Окей, это многое меняет, но вопрос "зачем" остаётся открытым
https://fsharpforfunandprofit.com/posts/match-expression/ например

Почитай про pattern matching

Andrew
29.08.2018
18:39:41
Окей, это многое меняет, но вопрос "зачем" остаётся открытым
Полезно, дабы дата классы писать только там, где они нужны, а не на каждый чих, где надо влеменно склеить пару-тройку значений.

Quantum Harmonizer
29.08.2018
18:39:43
как исользовать дженерики объяснил, с меня хватит )

Mikhail
29.08.2018
18:41:56
Кстати, а я keep могу просто так разместить или надо сначала JB поспрашивать?

Quantum Harmonizer
29.08.2018
18:42:48
и сразу стоит показать хорошие примеры использования

Va
29.08.2018
18:47:27
можно написать функцию типа <T> Component<*, *, T>.whatever(t: T, blah...), будет работать
data class Triple<T1, T2, T3>(val first : T1, val second: T2, val third: T3) fun <T> Triple<*, *, T>.copyThird(t: T) = copy(third = t) чем так плохо ?

или нужен component#() — юзай зачем заставлять генерить интерфейс ? данные не должны уметь в логику, такую туплу можно переюзать для любых типов, в чем беда-то ?

Bogdan
29.08.2018
18:48:37
я теперрь понял изза кого, на ооп наговаривают

Va
29.08.2018
18:49:28
зачем, если это скомпилится и будет работать ?

Bogdan
29.08.2018
18:49:28
про генерацию только ты говорил

зачем, если это скомпилится и будет работать ?
тогда зачем классы, делай сразу object : Any

Bogdan
29.08.2018
18:52:32
то же самое
а исключениям data за что ты топишь

Va
29.08.2018
18:52:50
а исключениям data за что ты топишь
прости, я не понял этого предложения

Google
Va
29.08.2018
18:55:30
data class Triple<T1, T2, T3>(val first : T1, val second: T2, val third: T3) fun <T> Triple<*, *, T>.matchThird(matcher: (T) -> Boolean) = takeIf { matcher(component3()) } вот вам матчер

Bogdan
29.08.2018
19:00:02
прости, я не понял этого предложения
наверное тогда стоит почитать что такое data-class и зачем он

Va
29.08.2018
19:00:21
наверное тогда стоит почитать что такое data-class и зачем он
а тебе подучиться формулировать мысль

Andrew
29.08.2018
19:00:29
наверное тогда стоит почитать что такое data-class и зачем он
Нет, тебе действительно стоит выражаться чуть яснее :)

Bogdan
29.08.2018
19:00:40
сколько прходит людей у которых банальное непонимание ? которым лень доку почитать\перечитать

Va
29.08.2018
19:01:43
Его копипастить для каждого дата+класса надо будет.
это аргумент но в stdlib кодогенерацию не положишь ведь )

Andrew
29.08.2018
19:01:47
и думать за него?
За себя достаточно. И прекратить переходить на личности.

Andrew
29.08.2018
19:02:19
это аргумент но в stdlib кодогенерацию не положишь ведь )
Туда и не надо. Самих componentN там же нету, они компилятором создаются.

Va
29.08.2018
19:03:08
если в стдлиб — писать пакован одинаковых функций, как это сделали RX

Bogdan
29.08.2018
19:03:19
а тебе подучиться формулировать мысль
хорошо сделал ты дата класс, и все 0 переиспользованость, ни наследоватся, все поля должны быть в конструкторе

Andrew
29.08.2018
19:03:42
если в стдлиб — писать пакован одинаковых функций, как это сделали RX
Откуда в стдлиб появится функция для твоего собственного дата-класса?

Va
29.08.2018
19:03:48
если нет — кодоген для этого не обязательна фишка в компиляторе языка, можно написать свою либу с использованием любого фреймворка для кодогена

Bogdan
29.08.2018
19:04:04
так надо или не надо ?
я не за и не против, но горидит костыли из дата классов я бы не стал, это потом подерживать неочень

Va
29.08.2018
19:04:15
Откуда в стдлиб появится функция для твоего собственного дата-класса?
положить в стдлиб пакован датаклассов, как Function0, Function1 и тд ?

а у себя использовать тайпалиасы, например

Andrew
29.08.2018
19:04:47
Google
Va
29.08.2018
19:05:28
ну так, а в чем тогда вопрос был ? почему это не сделали по дефолту в языке ?

Bogdan
29.08.2018
19:05:35
положить в стдлиб пакован датаклассов, как Function0, Function1 и тд ?
так почему не интерфейсов ? Вот в чем вопрос почему стд либ не положить набор интерфейсов, джб уже отвечали на этот вопрос и я сним согласен. Я повторюсь мне пока туплы не горят, но есть пару кейсов

Andrew
29.08.2018
19:05:53
а у себя использовать тайпалиасы, например
Дык прелесть дата-классов в том, что они классы, а не алиасы туплам.

Va
29.08.2018
19:06:07
Дык прелесть дата-классов в том, что они классы, а не алиасы туплам.
алиасы к туплам-дата классам все еще дата классы )

Andrew
29.08.2018
19:06:33
алиасы к туплам-дата классам все еще дата классы )
Но это алиасы, а не настоящие типы. Со всеми вытекающими.

Bogdan
29.08.2018
19:06:49
Кстати, есть ли какое нибудь обьяснение, почему нет интерфейса для объектов с componentN? Можно было бы очень классные вещи делать

Va
29.08.2018
19:07:11
Но это алиасы, а не настоящие типы. Со всеми вытекающими.
прости, но например какими вытекающими ?

Admin
ERROR: S client not available

Andrew
29.08.2018
19:08:18
прости, но например какими вытекающими ?
Типы не посравнивать, методы не пообьявлять и т.д. Не говоря уже о том, что свои имена полям не дать.

Va
29.08.2018
19:09:22
Типы не посравнивать, методы не пообьявлять и т.д. Не говоря уже о том, что свои имена полям не дать.
но ведь и с кодосгенереным интерфейсом ты тоже типы не посравниваешь а писать методы у датакласса, по-моему, не самая хорошая идея впрочем, всегда можно экстеншн

Andrew
29.08.2018
19:10:21
но ведь и с кодосгенереным интерфейсом ты тоже типы не посравниваешь а писать методы у датакласса, по-моему, не самая хорошая идея впрочем, всегда можно экстеншн
Класс, реализующий интерфейс, остаётся классом. И да, экстеншны между всеми тайпалиасами одного класса общие.

Я не то, чтобы спорю, мне без паттерн-матчинга нормально живётся, но людям, которые активнее применяют функциональный подход, он важнее. Линку на ПМ в F# уже кидали. Появится KEEP -- можно будет обсудить его. Пока я не вижу, чтобы текущая дискуссия с места двигалась. :)

Sergey
29.08.2018
19:54:43
Кто-то может объяснить почему suspend функция в байт-коде приобретает возвращаемый тип object?

Igor
29.08.2018
19:55:57
Что бы возращать либо результат (если внутри весь код был синхронный) либо флаг что результат вернется в колбеке

Sergey
29.08.2018
20:02:10
Хорошо. Были у меня две функции в одном классе`foo(): Int` и `<T> foo: T` и всё с ними было хорошо пока не понадобилось к ним добавить модификатор suspend.

Есть ли ещё подобные подводные камни и описываются ли они где-то хорошо?

Igor
29.08.2018
20:06:32
Если вернешь из синхронной supend функции intrinsics.COROUTINE_SUSPENDED - то приложение зависнит ?

Google
Sergey
29.08.2018
20:24:58
`@JvmName` тебе в помощь
Да, спасибо, это и использовал

Dmitry
30.08.2018
04:31:04
Всем привет, кто-нибудь смотрел байкод или замерял производительность, когда пишешь apply(this::someMethod) или apply {someMethod(this)}?

есть разница?

Roman
30.08.2018
05:21:59
Cmd+Shift+A -> Show Kotlin Bytecode

Quantum Harmonizer
30.08.2018
05:56:39
есть разница?
Нет, благодаря инлайнингу.

Sergey
30.08.2018
08:33:42
Привет, подскажите, плз: Есть springboot есть тесты на него Тесты написаны с некоторой иерархией Парент класс написан на котлине и у него есть аннотация @DirtiesContext Часть конкретных легаси тестов написаны на джаве и унаследованы от парента на котлина, но при их запуске аннотация @DirtiesContext ничего не делает. Кто нибудь сталкивался?

Igor
30.08.2018
08:57:39
Всем привет! Есть ли универсальная функция для автозамены текста кириллицы на латиницу в инпутах?

Денис
30.08.2018
08:58:57
Всем привет! Есть ли универсальная функция для автозамены текста кириллицы на латиницу в инпутах?
Привет, нет, как минимум, потому, что правила транслитерации есть разные.

Igor
30.08.2018
09:00:28
Грубо говоря, пишем как-то так? function() { var rus = "щ ш ч ц ю я ё ж ъ ы э а б в г д е з и й к л м н о п р с т у ф х ь".split(/ +/g), eng = "shh sh ch cz yu ya yo zh `` y' e` a b v g d e z i j k l m n o p r s t u f x `".split(/ +/g) ;

Или же всё-таки лучше условие применить?

Денис
30.08.2018
09:01:42
То есть посмотрев, например, в российские паспорта, выданные 8 лет назад и сейчас, можно увидеть некоторые отличия - например, Я с транскрипцией [йа] раньше транслитерировалось в "ya", теперь в "ia". -кс- теперь тоже транслируется в -ks-, например.

Igor
30.08.2018
09:02:57
if (this.value.match(/[^a-zA-Z0-9 ]/g)) { this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');

Такое решение будет работать, в таком случае?

Или вместо replace скорее switch?

Vladimir
30.08.2018
09:35:18
Кто-нибудь в курсе, о чём говорит сообщение w: Detected multiple Kotlin daemon sessions at build/kotlin/sessions при сборке Gradle-проекта?

Dmitry
30.08.2018
09:48:59
Нет, благодаря инлайнингу.
Я так и думал, но было немного сомнение)

Gregory
30.08.2018
10:15:11
Подскажите, как из ktor приложения замутить сервис под Ubuntu? Может есть что-то готовое?

Denis
30.08.2018
10:29:09
Добрый день. Подскажите как правильно (красиво) в котлине связать 2 observable, как ни пытаюсь, у меня все по джавовски получается, т.е. профита от котлине получаю :( мои обсы: Observable.fromCallable { reg_et.setOnKeyListener{ view, i, keyEvent -> if(keyEvent.action == KeyEvent.ACTION_UP){ presenter.onRegNumberChange(reg_et.editableText.toString(), passport_et.editableText.toString()) } false } } reg_et.afterTextChangeEvents() .map {reg_et.changeText(it.toUpperCase())} .map {reg_et.changeText(presenter.formatRegNumber(it))} .subscribe { presenter.onRegNumberChange(it.toString(), passport_et.editableText.toString()) } .addTo(disposable)

Maxim
30.08.2018
10:33:40

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