@kotlin_lang

Страница 778 из 982
Андрей
29.07.2018
09:36:12
причем контекст вроде Unconfined не помогает ни разу

короче разобрался

поломали runBlocking в 0.24.0 версии

так что откат до 0.23.4 спас ситуацию

Google
Bogdan
29.07.2018
10:29:10
Да и в котлине можно, но придётся кастить, а за это надо лапки отрывать)
я думал что arrayListOF тоже кастить нада, а оказалось нет, хотя я юзаю listOf, mutableListOf (очень редко)

Quantum Harmonizer
29.07.2018
10:29:41
я думал что arrayListOF тоже кастить нада, а оказалось нет, хотя я юзаю listOf, mutableListOf (очень редко)
он же не зря называется arrayListOf, а потому что возвращает ArrayList :)

Alexander
29.07.2018
11:01:06
я думал что arrayListOF тоже кастить нада, а оказалось нет, хотя я юзаю listOf, mutableListOf (очень редко)
Не надо ничего кастить, а то и правда чего-нибудь оторвут. И будут правы

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
для этого listOf есть, и то он по-моему ArrayList до сих пор возвращает
ну так я его и юзаю, а на счет что возращаем сейчас пароверим

Quantum Harmonizer
29.07.2018
11:10:27
нет обычный List
речь о том, какую реализацию листа он возвращает

Igor
29.07.2018
11:10:41
я думал что arrayListOF - возращает ImmutableList
> ImmutableList Это что такое? Откуда он в стандарном sdk?

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

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

> ImmutableList Это что такое? Откуда он в стандарном sdk?
https://github.com/Kotlin/kotlinx.collections.immutable/blob/master/proposal.md Вполне возможно, речь об этом.

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
я как бы смотрел, я вижу там только интерфейс List, иначе бы не спрашивал!
Если тебе не нужно его модифицировать, то чё париться?

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
whalemare
29.07.2018
14:11:33
я читаю переписку вашу, так и не понял, какую реализацию списка возврощает listOf, ArrayList? []int?
Тебе не важно какую реализацию возвращает метод, если ты используешь инициализацию через него, а не через конструктор

Google
Bogdan
29.07.2018
14:12:14
в Java нет просто такого как List, ты пишешь что List у тебя интерфейс, и когда передаешь что-то в список - ты указываешь конкретно что это у тебя за List, например - ArrayList. а в данном случаи, я не понимаю какую коллекцию я использую.
ты не должен знать реализацию - это звется инкапсуляция. У тебя есть некий контракт который описывает что объект может сделать (это грубо), знать конкретную реализации уже нужно когда есть баги, но если баги в библиотеки которую ты используешь, это не очень хорошо

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
Как миниум нужно значение типа undefined, которое будет при конвертации в JSON игнорироваться.
Не уверен что к этому, но transient есть ключевое слово кажется для этого, постоянно забываю

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

Да, там это аннотация

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

Alexander
29.07.2018
14:26:33
Это не совсем сериализация в данном случае, это неявное приведение. Но я чего-то не вижу такого ключевого слова

Кроме того, я говорю не про ключевое слово или анноатцию, а про значение. Типа если есть - преобразовываем, а нет - значит нет

В принципе на эту роль годится null, но я не знаю, как KotlinJS их обрабатывает

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

whalemare
29.07.2018
14:29:40
В принципе на эту роль годится null, но я не знаю, как KotlinJS их обрабатывает
в gson так и сделано кажется. Есть флаг который явно пишет филды в json если в них null или убирает. KotlinJS это же просто фронтенд, по идее также как на jvm должно работать

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
оно всё-равно выводит Any (
Мб потому что надо ?.also ?

А не .also

Egor
29.07.2018
16:43:16
Мб потому что надо ?.also ?
Так нету там null больше

Михаил
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
судя по всему Any
залез внутырь и посмотри, его сингнатуру

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>...

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
да решение то понятно)

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