
Artur
17.05.2018
09:08:56
registerInternal(action: String, consumer: (Context, T) -> Unit)
routes[action] = consumer

Quantum Harmonizer
17.05.2018
09:09:28

Artur
17.05.2018
09:13:39
т.к это поля в классе, тогда нужно будет указать дженерик для класса?

Quantum Harmonizer
17.05.2018
09:14:47

Google

Artur
17.05.2018
09:16:13
https://pastebin.com/v9wFESSy
routes[action] = consumer тут мы не может скопировать, может как-то можно хитро каст сделать?

Quantum Harmonizer
17.05.2018
09:17:45

Artur
17.05.2018
09:18:11
ну так, там же указан T : ScreenActionEvent

Quantum Harmonizer
17.05.2018
09:18:56

Artur
17.05.2018
09:20:29
можно убрать дженерик с функций и сделать его глобальным на весь класс
но это мне что то не очень ноавится
или так кастануть, routes[action] = consumer as (Context, Any) -> Unit
то тоже дико ((

Quantum Harmonizer
17.05.2018
09:22:38

Artur
17.05.2018
09:23:47
а какие есть ещё выходы?

Quantum Harmonizer
17.05.2018
09:24:35

Artur
17.05.2018
09:26:01
это просто роутер, где мы регаем доступные переходы
и потом можно делать следующее
ScreenRouter.route(this, new CartClickActionEvent());

Quantum Harmonizer
17.05.2018
09:27:48

Google

Artur
17.05.2018
09:30:21
да уж (
ок, спасибо. буду думать

ЕВГЕНИЙ
17.05.2018
09:43:12
Всем привет ! Подскажите пожалуйста, у меня есть приватная переменная класса, я хочу через свойство поля создать публичный сестер, это возможно?
private var a:ClassF? = null
public set(value) {
firld = value } тип такого
Идея иметь только сетер к переменной a

Quantum Harmonizer
17.05.2018
09:45:59

ЕВГЕНИЙ
17.05.2018
09:47:55

Quantum Harmonizer
17.05.2018
09:48:10

ЕВГЕНИЙ
17.05.2018
09:49:10
потому что свойства удобнее
То есть чтобы иметь приватный гетер и публичный сетер это нужно 2 дополнительные функции писать ? Ну как в яве

Gleb
17.05.2018
09:49:15
разве нельзя сделать паблик поле с приватным геттером?

Quantum Harmonizer
17.05.2018
09:49:41

Gleb
17.05.2018
09:49:44

ЕВГЕНИЙ
17.05.2018
09:50:15

Gleb
17.05.2018
09:59:12
private var value: String = "value"
get() { return field + " " }
fun setValue(value: String) {
this.value = value
}

Alexander
17.05.2018
10:29:49
Эм. Тупой вопрос - разве нельзя просто написать:
var value: String = "something"
private get

Quantum Harmonizer
17.05.2018
10:30:17

Иван
17.05.2018
12:18:02
Есть способ проверить пачку переменных на null, да и так, чтобы ещё и тип вывелся правильно?
listOf().all { it != null } не выводит же тип

Жабра
17.05.2018
12:19:40

Google

Иван
17.05.2018
12:20:21
Ну то есть
val x: Int? = getNullableInt()
val y: String? = getNullableString()
if (…) {
val a: String = x
val b: String = y
}

Жабра
17.05.2018
12:22:27
Как раз это убрать хочется
Зачем переприсваивать переменные?
val x: Int? = ...
val y: String? = ...
if (x != null && y != null) {
x // Int
y // String
}

Иван
17.05.2018
12:22:53
Они группируются в data class
Внутри которого не nullable
Пример не полный

Жабра
17.05.2018
12:23:21

Ivan
17.05.2018
12:23:31
val x: Int = getNullableInt() ?: default/throw exception
val y: String = getNullableString() ?: default/throw exception

Иван
17.05.2018
12:23:45
Ну как вариант
Но через исключения как-то криво

Ivan
17.05.2018
12:24:11
Если есть разумный дефолт, то лучше с ним, конечно

Andrew
17.05.2018
12:24:19

Жабра
17.05.2018
12:24:46

Ivan
17.05.2018
12:25:14
getNullableInt()?.let {
x -> getNullableString()?.let {
y -> DataClass(x, y)
}
}
Еще вот так уродливо можно
Для любителей

Жабра
17.05.2018
12:26:10
val x: Int? = ...
val y: String? = ...
if (x != null && y != null) {
DataClass(x, y)
}
В чем проблема?

Ivan
17.05.2018
12:26:37
Это джава получается, а не котлин

Жабра
17.05.2018
12:27:18

Ivan
17.05.2018
12:28:03
Летами не нужно. Был бы for comprehension, как в скале, было бы удобно. А так лучше с ?: на мой взгляд.

Google

Иван
17.05.2018
12:28:07
data class SomeDataClass(
val a: Int,
val b: String,
...
)
val x: Int? = getNullableInt()
val y: String? = getNullableString()
val ...
val someDataClass? = when {
<x, y и ещё N переменных != null> -> SomeDataClass(a = x, b = y)
else -> null
}
Похоже только через &&
Ладно

Жабра
17.05.2018
12:29:12

Иван
17.05.2018
12:29:57
Смущает, что нужно
… != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null && … != null

Ivan
17.05.2018
12:30:32
А зачем все nullable? Что предполагается дальше делать, если что-то из этого null?

Иван
17.05.2018
12:30:51
Вместо data class null записать в переменную

Ivan
17.05.2018
12:30:54
Возвращать null это изуродовать не только этот кусок, но и код, который будет его использовать

Иван
17.05.2018
12:31:06
То есть или все не null и тогда создать data class или ничего

Ivan
17.05.2018
12:32:37
И где этот data class используется предполагается, что он может отсутствовать, и это нормальная ситуация?

dimiii
17.05.2018
12:35:05
В чатике это похоже очень популярная тема, Елизаров уже давал идиоматичное решение:
DataClass(x ?: return, y ?: return)
Монаду прямо пощупать можно

Иван
17.05.2018
12:41:58

Жабра
17.05.2018
12:47:25
Точно нельзя придумать решение, где не будет столько null?

Quantum Harmonizer
17.05.2018
12:48:05
Точно нельзя столько null'ов. :)

Жабра
17.05.2018
12:49:18

dimiii
17.05.2018
12:50:08

Иван
17.05.2018
12:53:59

Жабра
17.05.2018
12:54:44

Google

Иван
17.05.2018
12:55:57
Нет. Они из БД берутся.
4 параметра, которые нужно показывать в json только в случае, если все заполнены

Quantum Harmonizer
17.05.2018
12:56:36

Жабра
17.05.2018
12:56:46

Aleksandr
17.05.2018
13:05:31

Иван
17.05.2018
13:15:41

Aleksandr
17.05.2018
13:16:26
ну это да - никуда не денешься

Костя
17.05.2018
13:33:19

Roman
17.05.2018
13:37:37
Да, сбросить его состояние нельзя. Если там тяжелый объект и он тебе не нужен больше, то занули.

Костя
17.05.2018
13:38:27
понял, спасибо
а что cancel может ?
это чтобы оборвать например загрузку ?
а если загружено уже, то бесполезно

Roman
17.05.2018
13:39:13
Точно.

Виталий
17.05.2018
13:43:17
Привет, подскажите как сделать так ?
private var colorMap = IntArray(ROWS, { IntArray(COLUMNS, { 0 }) })
двумерный интовый массив нулей

Quantum Harmonizer
17.05.2018
13:44:46

Виталий
17.05.2018
13:45:37

Quantum Harmonizer
17.05.2018
13:46:12

Виталий
17.05.2018
13:46:39