@kotlin_lang

Страница 789 из 982
Andrew
02.08.2018
11:09:01
C try.kotl.in убрали шаринг по ссылке, что ли?

А, отбой. https://try.kotlinlang.org/#/UserProjects/1dl67qhgavh26em6bvnu6lac59/2ba1fcgl3fhgci65nppqi4ej39

Dmytro
02.08.2018
11:15:16
в исходном списке есть. если фильтр отключаю, я вижу их
ты точно ничего не напутал? Исходный список это filtered ? Ты проверил filtered непосредственно перед фильтром? (скрин который ты выше скинул)

Костя
02.08.2018
11:15:47
Google
Quantum Harmonizer
02.08.2018
11:18:13
у меня есть список full и filtered
ты фильтруешь filtered

Andrew
02.08.2018
11:18:21
А точно планировалось написать filtered = filtered.filter {...}?

The
02.08.2018
11:18:51
ты фильтруешь filtered
прежде чем фильтровать я присваиваю в filtered full список

Andrew
02.08.2018
11:19:11
Присваиваешь или копируешь?

Quantum Harmonizer
02.08.2018
11:19:22
Ох уж эти переменные. Вобщем, прямая дорога в юнит-тесты.

The
02.08.2018
11:19:25
А точно планировалось написать filtered = filtered.filter {...}?
это потомучто filtered не изменяет object, ну ты в курсе наверн

Quantum Harmonizer
02.08.2018
11:19:31
Присваиваешь или копируешь?
а не должно быть разницы

Andrew
02.08.2018
11:19:41
Не должно быть, точно.

это потомучто filtered не изменяет object, ну ты в курсе наверн
В курсе. Я ссылку тебе с работающим упрощённым аналогом скинул -- всё-таки фильтр работает, как и должен. Проблема где-то снаружи кода, который ты показал. Шансов, что чатик угадает, что ты там снаружи сделал не так, небольшие. Так что таки надо отладчиком бегать.

А, ну ещё одна маленькая мысль -- ты говоришь, что "или" работает не так. Тебе нужны "все с тройкой и / или со статусом isAList", "все либо с тройкой, либо со статусом isAList" или ещё что-нибудь другое?

Google
Andrew
02.08.2018
11:26:52
еще несколько фильтров, new, recommend, alist, clist итп по желанию пользователя
Я не о том -- тебе ж нужно именно "или", а не "исключающее или"?

The
02.08.2018
11:27:23
Andrew
02.08.2018
11:28:42
"как минимум одно из условий выполняется: группа 3, статус isAList". Верно?

The
02.08.2018
11:28:54
Я не о том -- тебе ж нужно именно "или", а не "исключающее или"?
когда применяю фильтр, получаю список без бренддов

Andrew
02.08.2018
11:30:03
Я сдаюсь, я вроде достаточно прямо вопрос поставил несколько раз разными словами. Удачи в отладке ?

Denis
03.08.2018
01:28:29
Доброе утро подскажите, как в котлине из Single<List<Car>> получить List<Car>? Что-то не могу понять с синтаксисом

Alexander
03.08.2018
01:42:13
Доброе утро подскажите, как в котлине из Single<List<Car>> получить List<Car>? Что-то не могу понять с синтаксисом
Если речь идёт про rx, то полагаю, что нет никакой разницы в сравнении с джавой. Если нужно просто вытащить, то просто есть blockingGet() или что-то вроде того. Если речь про что-то другое, то неплохо бы знать, что за Single.

Dmitry
03.08.2018
06:33:57
Подскажите, я хочу проверить поле на null, и выполнить действие, если оно null. Прикреплю так, как пробовал - не выходит. Компилятор говорит, что поле всё ещё может быть null. val email = if (email.value != null) this.email.value else { reportError(emailError, "Поле не может быть пустым") return }

Axrorxo'ja
03.08.2018
06:33:57
добрый день есть такой вещь типа CompositeDisposable но для kotlin coroutines Jobs

Alexander
03.08.2018
06:36:42
вообще вот так надо: val email = email?.value ?: reportError(emailError, "Поле не может быть пустым") но в reportError ошибка должна выкидываться, иначе работать не будет

Dmitry
03.08.2018
06:37:46
String

Slava
03.08.2018
06:38:02
val localEmail = email if(localEmail == null) { do it

}

Alexander
03.08.2018
06:38:09
Во второй ветке if-а не строка возвращается

Google
Aleksandr
03.08.2018
06:38:10
можно return туда положить

?: return reportError

Alexander
03.08.2018
06:38:19
а, стоп

Вы его самому себе что ли присваиваете?

return в выражениях просто так ставить вообще нельзя

Slava
03.08.2018
06:39:57
как вы код форматируете?

в телеге

Nikolay
03.08.2018
06:40:39
добрый день есть такой вещь типа CompositeDisposable но для kotlin coroutines Jobs
Создаешь пустой Job() и потом указываешь его как родительский.

Dmitry
03.08.2018
06:40:46
нет, там должно присваиваться this.email, по идее. Исправлю, чтобы было понятнее: val localEmail = if (email.value != null) this.email.value else { reportError(emailError, "Поле не может быть пустым") return }

Alexander
03.08.2018
06:40:52
backquote как в маркдауне, но оно бывает глючит

нет, там должно присваиваться this.email, по идее. Исправлю, чтобы было понятнее: val localEmail = if (email.value != null) this.email.value else { reportError(emailError, "Поле не может быть пустым") return }
Тогда мой пример для вас полностью годится, если в reportError выкидывается исключение Если нет, то надо использовать нулябельный тип

Axrorxo'ja
03.08.2018
06:42:03
Alexander
03.08.2018
06:42:48
чета не понял ,можна примером
val job = Job() launch(parentJob = job){...}

Axrorxo'ja
03.08.2018
06:43:59
большой спасибо, понял

Alexander
03.08.2018
06:44:35
родительсткий job - довольно удобная вещь. Можно делать иерархию и отрубать все сразу в случае экстренного останова (если родитель делает cancel, то все дети тоже отменяются)

Alexander
03.08.2018
06:50:11
Кстати, сейчас залез и посмотрел, если явно не указан контекст, то он тоже наследуется от парента. Довольно удобно, его можно указать один раз

Dmitry
03.08.2018
06:59:01
Тогда мой пример для вас полностью годится, если в reportError выкидывается исключение Если нет, то надо использовать нулябельный тип
Ваш вариант не сработал. Получилось сделать так: val localEmail = email.value ?: run { reportError(codeError, "Поле не может быть пустым") throw NullPointerException() }

Alexander
03.08.2018
07:00:58
Нут значит в вашем репорте не выкидывается исключение или не всегда выкидывается. Смысл в том, что у localEmail должен быть какой-то определенный тип, и в случае, если то, что вы хотите null, оно должно или как-то обрабатывать это или выкидывать исключение. Там можно возвращать пустую строку например, если это по логике годится

Google
Dmitry
03.08.2018
07:11:17
Нут значит в вашем репорте не выкидывается исключение или не всегда выкидывается. Смысл в том, что у localEmail должен быть какой-то определенный тип, и в случае, если то, что вы хотите null, оно должно или как-то обрабатывать это или выкидывать исключение. Там можно возвращать пустую строку например, если это по логике годится
функция предельно простая... Вот, как по идее должно происходить присваивание: val localEmail = email.value ?: reportError(emailError, "Поле не может быть пустым") А вот функция: private fun reportError(field: MutableLiveData<String>, message: String) { field.value = message throw NullPointerException() } Но именно в таком варианте компиллятор не пропускает и говорит, что localEmail должен быть типа String, но на самом деле он Any

Alexander
03.08.2018
07:12:43
Это то, о чем я говорю, компилятор не знает, что reportError всегда выкидывает ошибку. Это будет вылечено контрактами, когда они появятся, но пока не работает. Кстати, я думаю, что если вы поставите модификатор inline перед своей функцией, то все будет работать

Alexander
03.08.2018
07:14:23
Сейчас у него мозг сломается.

Dmitry
03.08.2018
07:15:37
Спасибо, я понял :) В моем случае будет работать, если функция будет возвращать Nothing

Admin
ERROR: S client not available

Axrorxo'ja
03.08.2018
07:15:40


Andrew
03.08.2018
07:16:50
it.result?.let { result -> ... }

Alexander
03.08.2018
07:17:03
Нет, это фича. Он var, поэтому может такое случиться, что кто-то его испортил между двумя строками

Dmitry
03.08.2018
07:18:59
Другой вопрос, почему функции по дефолту не возвращают Nothing, a Unit? В чем их разница?

Bogdan
03.08.2018
07:20:12
Alexander
03.08.2018
07:20:27
Unit - это синглетон объект, которые эквивалентен java void. Nothing - это значит что что-то возвращается, но это что-то является подтипом чего угодно

Вот я еще не до конца это понимаю

Alexander
03.08.2018
07:21:27
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-nothing.html

Andrew
03.08.2018
07:21:42
Не совсем. Nothing в качестве возвращаемого типа функции значит, что функция гарантированно закончит выполнение броском исключения, то есть не вернёт ничего обычным способом.

Alexander
03.08.2018
07:21:46
В принципе да. Кстати, спасибо, я сам наконец примерно понял, что с чем его едят

Google
Alexander
03.08.2018
07:22:10
Мне на форуме теоретики мозги замутили, я запутался

Dmitry
03.08.2018
07:22:10
И я понял. Спасибо :)

Andrew
03.08.2018
07:22:29
Точно.

Alexander
03.08.2018
07:22:42
Ну это то же самое, бесконечный цикл прерывается только по исключению

Andrew
03.08.2018
07:22:57
Ну или смертью VM ?

Alexander
03.08.2018
07:23:17
В каком-то смысле это тоже исключение :)

Dmitry
03.08.2018
07:23:31
Для ясности, если я в своей функции уберу выброс исключения, то компилятор это не пропустит: private fun reportError(field: MutableLiveData<String>, message: String) : Nothing { field.value = message throw NullPointerException() }

Igor
03.08.2018
07:23:34
Вот я еще не до конца это понимаю
Ребята, окунитесь слегка в теор. категорий - ну прям стыдно не понимать зачем нужный Nothing и Unit

Alexander
03.08.2018
07:23:56
Заачеем?

Того, что написано в документации достаточно без всякой теории категорий

Igor
03.08.2018
07:25:59
Ну это то же самое, бесконечный цикл прерывается только по исключению
Так фишка не в исключениях, а в том что функция НЕ вернет значения тк Nothing не имеет конструктора. К примеру такой код скомпилируется fun foo(): Nothing { while (true) { } }

Alexander
03.08.2018
07:26:16
Я понял

Но не понял, зачем тут теория категори

Igor
03.08.2018
07:27:08
Ну ты понимаешь, зачем нужен Unit, а почему не юзать void везде?

Ivan
03.08.2018
07:29:04
Ну или смертью VM ?
HeatDeathOfTheUniverseException

Alexander
03.08.2018
07:29:10
Я физик, а не математик, мне ближе какие-то реальные сущности. Я понимаю Unit и Nothing как некоторый вариант контрактов. Unit подразумевает, что функция что-то вернет, но это что-то никогда не будет использовано, а Nothing - функция никогда ничего не вернет

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