@kotlin_lang

Страница 696 из 982
Eugene
05.06.2018
06:01:13
И как сделать, чтобы не были равны

Bogdan
05.06.2018
06:02:14
Если дата классы то для каждого элемента списка нужно сделать copy

Eugene
05.06.2018
06:05:39
val newData = data.toMutableList() newData[position] = data[position].copy(isPlaying = !data[position].isPlaying) как-то так?

Google
Konstantine
05.06.2018
09:59:05
Sealed класс обязательно должен лежать в том же файле, что и наследники?

Или можно как-то обойти?

balolam
05.06.2018
10:00:10
В этом же весь смысл

Pavel
05.06.2018
10:07:37
Konstantine
05.06.2018
10:08:45
Убрать sealed?
Тогда везде добавлять else

Это не красиво

Pavel
05.06.2018
10:11:36
Тогда везде добавлять else
А как это связано с else?

Gleb
05.06.2018
10:12:30
А как это связано с else?
он о матчинге через when

Pavel
05.06.2018
10:12:56
А, понял)

Bogdan
05.06.2018
10:17:59
Или можно как-то обойти?
Попробуй аннотацию где переименовывает файл и аннотацию которая говорит что эти файлы нужно скелиить

Google
balolam
05.06.2018
10:19:38
Тогда везде добавлять else
Дак в том и смысл sealed классов, чтобы их кол-во было определено.

Тимур
05.06.2018
10:22:47
Sealed класс обязательно должен лежать в том же файле, что и наследники?
да https://kotlinlang.ru/docs/reference/sealed-classes.html если объявлять в другом, то откуда тогда компилятору знать, что где-то нет ещё каких-то других наследников? в этом собственно и смысл sealed, что наследников ограниченный набор, а если хочется обойти, значит надо просто убрать sealed

Konstantine
05.06.2018
10:34:04
Но ладно, нет так нет.

Просто хотелось разбить на отдельные файлы, не люблю городить в одном.

Тимур
05.06.2018
10:35:48
Компилятор вроде собирает все воедино и уж кто кто, а он должен знать связи по итогу.
ты можешь в другом модуле наследника объявить, о котором компилятор не знает

Konstantine
05.06.2018
10:36:20
ты можешь в другом модуле наследника объявить, о котором компилятор не знает
Тогда пусть выкидывает ошибку. Это уже ты сам охуел.

Тимур
05.06.2018
10:40:18
Тогда пусть выкидывает ошибку. Это уже ты сам охуел.
идея в том, чтобы сделать compile time безопасный механизм, безо всяких нежданчиков с таким же успехом можно убрать sealed и писать в else throw Exception

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

Quantum Harmonizer
05.06.2018
10:55:12
Это в Java единица компиляции — файл. В котлине — модуль, так что такой feature request вполне ок.

Andrew
05.06.2018
11:02:46
ты можешь в другом модуле наследника объявить, о котором компилятор не знает
Последний раз, когда я пробовал, sealed из другого модуля и не работает, как sealed.

Quantum Harmonizer
05.06.2018
11:03:45
Оу. Как же result type?

Тимур
05.06.2018
11:07:04
Это в Java единица компиляции — файл. В котлине — модуль, так что такой feature request вполне ок.
котлин компиляется в те же самые class файлы, у него прозрачный interop с java на уровне исходников скорее всего будут проблемы с реализацией такого feature request

Konstantine
05.06.2018
11:08:31
Такой еще вопрос. Есть класс у которого есть поля dayOfMonth и month. Оба инты. Как сортировать по ним обоим? Может стоит в строку как-то?

Тимур
05.06.2018
11:09:34
какие проблемы?
не знаю, я внутрь котлиновского компилятора не лазил но поскольку котлин не сам по себе, а позволяет прозрачно интеропиться с java, думаю что из-за этого возникнут ограничения

Quantum Harmonizer
05.06.2018
11:09:47
пока не понятно, о чём ты и почему с файлом ограничений нет, а с модулем будут

Тимур
05.06.2018
11:12:57
пока не понятно, о чём ты и почему с файлом ограничений нет, а с модулем будут
потому что сборка совместима с java она генерит class файлы а java не знает ничего про модули например, можно наследника в java файле объявить и компилятор котлина про это ничего не узнает

Google
dimiii
05.06.2018
11:26:01
https://youtrack.jetbrains.com/issue/KT-18370

И вот еще интересное https://youtrack.jetbrains.com/issue/KT-12585

Роман
05.06.2018
11:27:56
все issue трекеры настолько отвратно выглядят?

whalemare
05.06.2018
11:27:58
А для чего разделять на разные файлы? Я обычно как енумчики их пишу и хорошо выходит. Единственный кейс который могу придумать, это когда много абстрактных методов и проще чтобы разные реализации в своих файлах лежали

dimiii
05.06.2018
11:28:41
все issue трекеры настолько отвратно выглядят?
Замечательно выглядят, а уж функциональность вообще отличная

Роман
05.06.2018
11:29:12


читабельность 0%

Andrey
05.06.2018
11:31:26
читабельность 0%
А что не читаемое?

Quantum Harmonizer
05.06.2018
11:31:45
все issue трекеры настолько отвратно выглядят?
нет, в Github и GitLab выглядят прикольно, но так себе по функционалу

Роман
05.06.2018
11:31:47
ты это видишь? прочитай например ту серую строчку сходу Когда она там закрыта, когда открыта, её тип баг/фича

Роман
05.06.2018
11:32:20
Какую?
Вот именно

Andrey
05.06.2018
11:32:25
Лол

Прочитай фиолетовую строчку оттуда

Admin


Andrey
05.06.2018
11:32:48
Или серобуромалиновую.

*facepalm*

Роман
05.06.2018
11:34:45
Лол
ну я и не могу потому что это на белом фоне. Кто будет нечто жёлтое читать на белом?

Это же сливается всё

Kirill
05.06.2018
11:35:37
значительно удобнее джиры :)

Google
Igor
05.06.2018
11:36:06
https://youtrack.jetbrains.com/issue/KT-18370
Кажись не надо было разрешать выносить классы из под sealed, теперь народ не остановить ?. Всегда рассматривал sealed, как enum на (adt) стероидах

Роман
05.06.2018
11:36:06
значительно удобнее джиры :)
по функциональности не спорю, но я в своё время дропнул кучу ide которые не умеют в шемы

Mikhail
05.06.2018
11:41:30
Кажись не надо было разрешать выносить классы из под sealed, теперь народ не остановить ?. Всегда рассматривал sealed, как enum на (adt) стероидах
ну до adt они не дотягивают потому что в adt каждый тип может участвовать в любой сумме типов. А из-за отсутствия множественного наследования с sealed class приходится делать обертки

Igor
05.06.2018
11:52:38
Я только не понимаю чем тут наследование может помочь

Mikhail
05.06.2018
11:57:11
Я только не понимаю чем тут наследование может помочь
оно не помогает, я наоборот сетую, что sealed class имитируют суммы типов через наследование

Konstantine
05.06.2018
12:00:18
Evgeny
05.06.2018
12:34:38
привет, а сюда же можно тупые вопросы от новичка? var checkList: List<CheckMap>? = null fun getChecks(): List<Int>? { if (checkList != null) { val list = ArrayList<Int>() for (check in checkList!!) { list.add(check.id!!) } return list } return null } class CheckMap : Serializable { var id: Int? = null } Я думаю это очень неочень, ну просто люто воняет, но чет не догоняю, как обернуть в let или apply оба !! и при этом сразу вернуть при вызове

Evgeny
05.06.2018
12:43:20
о, спасибо. понял куда копать, и за mapNotNull спасибо

Mary
05.06.2018
13:56:56
Всем привет! 20 июня приходите на Kotlin Moscow User Group Meetup в офисе Leroy Merlin: https://leroy-merlin.timepad.ru/event/732812/

Andrey
06.06.2018
15:36:04
Всем привет! Хочу настроить ktor.io как UDP сервер. В итоге не понял как послать сообщение в ответ, ктото сталкивался с этим?

Alexander
06.06.2018
15:41:47
Дурацкий вопрос, у вас HTTP поверх UDP?

Alex
06.06.2018
15:42:15
Дурацкий вопрос, у вас HTTP поверх UDP?
хттп поверх тсп же, алё)

Alexander
06.06.2018
15:42:22
я понял

Alex
06.06.2018
15:42:28
Или это сарказьм?

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