
Dibro
18.04.2018
21:03:17
ай, там ещё генерики были(

Stas
18.04.2018
21:03:26
пробовал оба

Alexander
18.04.2018
21:09:25
https://youtrack.jetbrains.com/issue/KT-15952
Так что полагаю, что только Typealias

Google

Stas
18.04.2018
21:13:57

Aleksandr
18.04.2018
23:11:59

Mikhail
19.04.2018
05:59:17

Aleksandr
19.04.2018
06:00:00
в kotlin in action точно про это было

Mikhail
19.04.2018
06:00:13
Если ты про тот коонкретный класс, который sealed, то он абстрактный
в этом причина, почему его инстанс нельзя создать, а не в приватности конструктора
Если бы конструктор был приватным, то класс был бы закрытым и нафиг он был бы нужен тогда sealed

Sergey
19.04.2018
06:18:43

Dmitriy
19.04.2018
06:20:32

Sergey
19.04.2018
06:21:29

Petr
19.04.2018
06:21:59

Dmitriy
19.04.2018
06:23:25
О! Они в MVI могут)

Sergey
19.04.2018
06:34:36

Google

Petr
19.04.2018
06:35:25

Саша
19.04.2018
06:40:52
Привет всем, можете помочь с корутинами, дело не хитрое, еще просто не успел освоить, крч, я хочу сделать:
- в одном бг потоке одно вычисление
- параллельно во втором второе
- когда они оба завершатся, то мне надо сделать Pair(a, b)
подскажите что да как?

Roman
19.04.2018
06:45:29

Саша
19.04.2018
06:49:30

Жабра
19.04.2018
06:59:48

Лёша
19.04.2018
07:01:06
до какой-то версии надо было указывать явно
видимо, по привычке)

whalemare
19.04.2018
07:23:06
Или чтобы понятнее было что там и откуда

Sergey
19.04.2018
07:49:43

Petr
19.04.2018
07:53:15

Щерба
19.04.2018
08:04:13
Всем привет! Как прогнать через цикл размерность массива? В Java так напиример for(int i = 0; response.body().data.size; i++) и в конечном итоге получает 1,2,4..... в котлин так не работает for (i in response.body().data.size)

Dibro
19.04.2018
08:05:32

Igor
19.04.2018
08:07:01

Щерба
19.04.2018
08:07:02

Andrew
19.04.2018
08:07:33
или arr.forEachIndexed { i, value -> .. }

Щерба
19.04.2018
08:08:14
Круто всем спасибо!!!))

Vladislav
19.04.2018
10:37:23
В котлине нет частичной спецификации типов генерика, чтобы он взял один тип из параметра, а остальные можно было бы явно указать?

Quantum Harmonizer
19.04.2018
10:38:26

Vladislav
19.04.2018
10:38:42

Dibro
19.04.2018
10:40:59
типа можно же сделать
fun <T> myMap() = mapOf<String, T>()
или я совсем не о том?

Google

Quantum Harmonizer
19.04.2018
10:43:57

Dibro
19.04.2018
10:45:00

Quantum Harmonizer
19.04.2018
10:45:16

Roman
19.04.2018
10:45:17
Для этого в Котлине есть функции. Заводишь свою функцию с одним типовым параметром и пользуешься.

Igor
19.04.2018
10:52:39
А есть где нибудь расжеванное объяснение, почему в rxjava zipWith в котлин не выводятся типы?

Leonid
19.04.2018
11:06:30

Stepan
19.04.2018
13:20:21
Интересно почему в Channels.kt есть
public fun <E, R> ReceiveChannel<E>.map(context: CoroutineContext = Unconfined, transform: suspend (E) -> R): ReceiveChannel<R> =
produce(context) {
consumeEach {
send(transform(it))
}
}
но нет чего-то вроде
public fun <E, R> SendChannel<E>.contramap(context: CoroutineContext = Unconfined, transform: suspend (R) -> E): SendChannel<R> =
actor(context) {
consumeEach {
send(transform(it))
}
}
?

Vyacheslav
19.04.2018
14:08:21
помогите понять почему

Petr
19.04.2018
14:09:00
nullsafety потому что

Vladislav
19.04.2018
14:09:08

Petr
19.04.2018
14:09:30
в котлине лучше хаписать arguments?.let{//logic//}
код внутри выполнится если аргументы не нулл

Vyacheslav
19.04.2018
14:09:33

Petr
19.04.2018
14:09:45

Vyacheslav
19.04.2018
14:09:56
ну это я вкурсе но почему оно не хендлит проверку в доке вроде писалось что хендлит
просит элвиса

Alexey
19.04.2018
14:10:21
это не var случаем?

Vladislav
19.04.2018
14:10:45
arguments - это поле объекта this и от строки к строке оно может меняться, к примеру, в другом потоке. Поэтому каждый раз его надо чекать при доступе. О чем компилятор и говорит

Va
19.04.2018
14:10:48

Roman
19.04.2018
14:10:57
Для переменных-пропертей смарт касты не работают.

Google

Vyacheslav
19.04.2018
14:11:16

Roman
19.04.2018
14:11:32
допиши перед ифой
val arguments = arguments

Alexey
19.04.2018
14:11:46

Va
19.04.2018
14:12:19

Vyacheslav
19.04.2018
14:13:30

Alexander
19.04.2018
14:14:37

Vyacheslav
19.04.2018
14:14:55
так делается только в случае если нужно вернуть результат

Petr
19.04.2018
14:15:00

Vyacheslav
19.04.2018
14:15:02
мне не нужен результат

Roman
19.04.2018
14:16:20
Обилие let, apply, run и т.п. по моему опыту не делает код понятнее...
Они должны быть в местах, где без них не обойтись. Если можно обойтись ифой, лучше оставить ифу.

Alexander
19.04.2018
14:17:40
Нет лишних переменных, короче. И мне казалось, что его отмечали как идиоматичный.
arguments?.let {
it.getString(...)
it.getString(...)
}

Roman
19.04.2018
14:18:48
Плюсов у этих функций море, но есть один жирный минус - читаемость.

Albert
19.04.2018
14:19:19
Вкусовшина. Конструкция val arguments = arguments тоже выглядит странно на мой взгляд

Roman
19.04.2018
14:19:40
Хотя мб дело привычки, мб после лет 10 программирования на котлине и привыкну)

Petr
19.04.2018
14:19:45

Albert
19.04.2018
14:19:50

Alexander
19.04.2018
14:21:54
Ну, тут рекомендуется так: https://kotlinlang.org/docs/reference/idioms.html#execute-if-not-null
А дальше уже решать самим, кому как удобнее.

Виталий
19.04.2018
14:24:34
Мне тоже shadowing кажется читабельней, без лишних вложенностей
кроме того если у тебя кроме if ничего в методе больше нет и не нужно возвращать значение из него, можно и так val arguments = arguments ?: return

Google

Alexander
19.04.2018
14:28:29

Виталий
19.04.2018
14:28:58

Alexander
19.04.2018
14:34:15

Виталий
19.04.2018
14:36:00
ну с одним полем ещё как-то норм, а если у тебя 3 поля и тебе нужно какие-то сравнения сделать, let уже совсем грустны)

Alexander
19.04.2018
14:36:01

Vladislav
19.04.2018
14:55:10

Bogdan
19.04.2018
15:02:51

Kirill
19.04.2018
15:48:37
у нас же, наверное, тут есть студенты: https://jetbrains.ru/students/internship/themes/scala-to-kotlin-converter/

Sergey
19.04.2018
16:01:03
тонко