
Андрей
29.07.2018
09:36:12
причем контекст вроде Unconfined не помогает ни разу
короче разобрался
поломали runBlocking в 0.24.0 версии
так что откат до 0.23.4 спас ситуацию

Google

Bogdan
29.07.2018
10:29:10

Quantum Harmonizer
29.07.2018
10:29:41

Alexander
29.07.2018
11:01:06

Bogdan
29.07.2018
11:02:49

Quantum Harmonizer
29.07.2018
11:03:16
вот за это тоже лапки отрывать)

Alexander
29.07.2018
11:03:25
для этого listOf есть, и то он по-моему ArrayList до сих пор возвращает

Andrew
29.07.2018
11:04:48
Кот же 10 сообщений назад раписал, что и когда он возвращает :)
Главное, что он возвращает иммутабелный List<T>. Всё остальное, включая конкретный тип — детали реализации, которые должны быть проигнорированы.

Quantum Harmonizer
29.07.2018
11:05:13
только для чтения != иммутабельный

Bogdan
29.07.2018
11:05:38

Quantum Harmonizer
29.07.2018
11:10:27

Igor
29.07.2018
11:10:41

Bogdan
29.07.2018
11:11:10

Google

Andrew
29.07.2018
11:11:29
только для чтения != иммутабельный
А кто может поменять read-only список, который был получен как List<T> и везде передавался как List<T>? Ну если откинуть вероятность того, что кто-то его кастовал и менял.

Quantum Harmonizer
29.07.2018
11:11:43

Bogdan
29.07.2018
11:11:46

Andrew
29.07.2018
11:12:07
В общем случае я согласен, в конкетном обсуждаемом (listOf() и вперёд) этим можно пренебречь.

Sander
29.07.2018
13:39:21
я читаю переписку вашу, так и не понял, какую реализацию списка возврощает listOf,
ArrayList? []int?

Igor
29.07.2018
13:44:32
Загляни в сорцы ?

Sander
29.07.2018
13:44:48
я как бы смотрел, я вижу там только интерфейс List,
иначе бы не спрашивал!

Rikland
29.07.2018
13:46:43

Sander
29.07.2018
13:47:14
дело в том что, хочется понимать что ты пишешь ...
не на php же пишу ...

Rikland
29.07.2018
13:48:59
Тебе метод обещает List

Sander
29.07.2018
13:50:04
в Java нет просто такого как List, ты пишешь что List у тебя интерфейс,
и когда передаешь что-то в список - ты указываешь конкретно что это у тебя за List, например - ArrayList.
а в данном случаи, я не понимаю какую коллекцию я использую.

Dzmitry
29.07.2018
13:52:52

Sander
29.07.2018
13:57:25
изучаю Kotlin, потому что - надо знать такие вещи, как я буду читать чужой код, если основ не знаю.

Dzmitry
29.07.2018
14:00:09
В исходниках глянь.mapOf HashMap возвращает. Но опять же, эти утилитарные методы были созданы не для того, что бы кто-то парился какая там реализация под капотом. Наоборот идея - есть список и хорошо, а какой там список внутри пофиг
Может кстати в новых релизах что и поменялось. Если так важно тебе знать - создай коллекцию и спроси у нее какого она класса

Bogdan
29.07.2018
14:08:09

Alexander
29.07.2018
14:10:49

whalemare
29.07.2018
14:11:33

Google

Bogdan
29.07.2018
14:12:14


Alexander
29.07.2018
14:13:10
Вот я спустя два с половиной года вернулся к этому вот вопросу: https://discuss.kotlinlang.org/t/ts2kt-and-partial/6046 И чего-то воз и ныне почти что там же. С тех пор не появилось каких-то красивых решений на эту тему? Я имею в виду Partial?
На ум приходят всякие костыли вроде опасных кастов из динамика в определенный класс, но похоже без поддержки на уровне языка, тут ничего хорошего не получится
Как миниум нужно значение типа undefined, которое будет при конвертации в JSON игнорироваться.

whalemare
29.07.2018
14:22:10

Alexander
29.07.2018
14:22:51
transient - это в яве для отсуствия сериализации, в котлине его вообще нет
Да, там это аннотация

whalemare
29.07.2018
14:24:31
А в котлин это ключевое слово. В жсон это же тоже сериализация

Alexander
29.07.2018
14:26:33
Это не совсем сериализация в данном случае, это неявное приведение. Но я чего-то не вижу такого ключевого слова
Кроме того, я говорю не про ключевое слово или анноатцию, а про значение. Типа если есть - преобразовываем, а нет - значит нет
В принципе на эту роль годится null, но я не знаю, как KotlinJS их обрабатывает

whalemare
29.07.2018
14:28:20

Sander
29.07.2018
14:29:27

Combot
29.07.2018
14:29:30
Sander ? (0) увеличил репутацию Bogdan Panchenko (1)

whalemare
29.07.2018
14:29:40

Alexander
29.07.2018
14:30:54
Не знаю, в JavaScript свой null есть. Скорее всего да.
В принципе тогда не так сложно эмулировать Parial. Делаем все типы нулями по-умолчанию и потом конструриуем объект в стиле Obj().apply{}
Без кодогенерации тяжко это сделать.
Отправил товарищам на рассмотрение: https://github.com/Kotlin/ts2kt/issues/81

Mikhail
29.07.2018
16:30:16
also ведь возвращает тот объект от которого его вызвали?

Google

Mikhail
29.07.2018
16:32:46

Egor
29.07.2018
16:37:31
Не пытайтесь понять колдунских кастов котлина. Просто не вызывайте also у null

whalemare
29.07.2018
16:38:15
Потому что npe

Mikhail
29.07.2018
16:40:21
оно всё-равно выводит Any (

Anton
29.07.2018
16:42:30
скобочки

Admin
ERROR: S client not available

Михаил
29.07.2018
16:42:54
А не .also

Egor
29.07.2018
16:43:16

Михаил
29.07.2018
16:43:50
На последнем там в елс вообще непойми что

Egor
29.07.2018
16:44:08
А, ну кстати да

Mikhail
29.07.2018
16:44:13
ой да
всё-равно выводит Any

Bogdan
29.07.2018
16:45:58
стоп
посмотри что возращает also
https://cdn-images-1.medium.com/max/1600/1*pLNnrvgvmG6Mdi0Yw3mdPQ.png

Google

Mikhail
29.07.2018
16:48:21
судя по всему Any

Михаил
29.07.2018
16:48:26
Оберни when в круглые скобки

Bogdan
29.07.2018
16:48:47

Alexander
29.07.2018
16:48:50
Сделайте переменную с явным типом Fragment. Котлин не умеет общего предка искать. Он выводит тип только если все возвращает строго одно и то же

Mikhail
29.07.2018
16:49:15
вот да, тоже склоняюсь к последней идее

Egor
29.07.2018
16:49:33

Михаил
29.07.2018
16:49:42
Тогда можно .also<Fragment>...

Egor
29.07.2018
16:50:02

Alexander
29.07.2018
16:50:24
Правильно, потому что по возвращаемому значению функции
.also<Fragment> может сработать, но не уверен

Mikhail
29.07.2018
16:51:18
не работает
теперь весь when светит красным
и говорит что типы при входе в also не совпадают

Egor
29.07.2018
16:51:50
пф, Production-Ready Language

Alexander
29.07.2018
16:52:16
Отлично все работает, просто это задача, на которую вывод типов не расчитан

Egor
29.07.2018
16:52:32
Может быть такое, что .also вызывается не на том, что возвращает when, а на лямбде, которая в when передается?

Alexander
29.07.2018
16:52:41
Сделайте нормальную локальную переменную с типом Fragment и все будет работать. Две лишние скобочки

Egor
29.07.2018
16:52:43
Наверное, нет

Alexander
29.07.2018
16:52:53
нет конечн

Mikhail
29.07.2018
16:53:03
да решение то понятно)