
Bogdan
31.05.2018
19:59:28

dimiii
31.05.2018
23:14:53

Gromyk
01.06.2018
08:49:00
привет
ребята, как достучаться к активити-хосту с фрагмента?
а то чёт выбрасывает "only safe or non null asserted calls are allowed"

Лёша
01.06.2018
08:59:32

Google

Quantum Harmonizer
01.06.2018
09:02:09
лучше бы в гугл послал)

OlegKrikun
01.06.2018
09:02:48

Leonid
01.06.2018
09:11:09
Выглядит просто как то что getActivity возвращает nullable переменную
И человека надо просто в базовую документацию послать)

Gromyk
01.06.2018
09:13:26
Уже пришёл оттуда, спасибо всем)

OlegKrikun
01.06.2018
09:15:30
если вопрос был про нулбл из getActivity()

Gromyk
01.06.2018
10:42:52

Ivan
01.06.2018
12:17:56
Ребят, кто нить делал в ktor или в спринг такое обновление в контроллере, чтобы поля, которые undefined не обновлялись в null, а просто игнорировались?

Mikhail
01.06.2018
13:32:41
можно ли как-нибудь в котлине указать явно nullability для метода из джавы, к которому у меня нет доступа?
чтобы во всех местах в проекте он подсветился как nullable

Andrew
01.06.2018
13:35:06

Mikhail
01.06.2018
13:35:58
кажется, я придумал решение

Quantum Harmonizer
01.06.2018
13:36:45
завернуть в свой метод?

Google

Mikhail
01.06.2018
13:36:47
метод X, возвращающий тип Foo! оборачиваем в екстеншн safeX(...): Foo?
ага
не самое надежное решение, но сойдет

Роман
01.06.2018
13:38:00

Vladimir
01.06.2018
13:38:19
А интересно, можно ли это состряпать из поддержки jsr-305 и package-info.java в чужом пакете

Роман
01.06.2018
13:38:58
можно asm'ом состряпать и патчить при загрузке

Mikhail
01.06.2018
13:39:17
екстеншны хоть позволяют делать это инкрементально

Vladimir
01.06.2018
13:41:16
Ну на уровне методов без модификации библиотек, видимо, только так.
Но безопасности это не прибавляет нисколько

Vadim
01.06.2018
21:13:38
https://en.wikipedia.org/wiki/Kotlin-class_destroyer никогда бы не подумал по названию ссылки…

Igor
01.06.2018
21:31:44
В 2012 году Бреслав на докладе в fprog это рассказывал ? (кстати годный доклад был)

Nameless
02.06.2018
14:19:21
как быть?

Yaroslav
02.06.2018
14:23:36

Nameless
02.06.2018
14:26:33
как в котлин еще можно сделать бесконечный цикл в духе for (;;) {
}?

Egor
02.06.2018
14:27:15
Какой-то джаваскрипт кодинг-стайл
А почему нельзя просто кастовать к инту?

Nameless
02.06.2018
14:28:58

Google

Egor
02.06.2018
14:29:38
Складываю оружие, сэр

Nameless
02.06.2018
14:30:20

Roman
02.06.2018
14:31:29
async<Int> { ... }

Nameless
02.06.2018
14:32:25

Egor
02.06.2018
14:33:23
А внутрь асинка разве что-то передается?
Какой тип у it?

Nameless
02.06.2018
14:34:28

Egor
02.06.2018
14:35:27
minutochku
Нельзя написать такой код
В котлине почти все - выражение
В т.ч. и return
И.е. return ... -> Unit
Или нет
Хз

Nameless
02.06.2018
14:38:07

Egor
02.06.2018
14:38:30
throw Exception же никогда не выполняется, ну

Igor
02.06.2018
14:38:47
async {
val trueCondition = true
while (trueCondition) {
return@async it
}
throw RuntimeException("FAIL")
}

Egor
02.06.2018
14:39:19
async получает тип Unit, потому что внутри него находится while, который является выражением, которое ничего не возвращает

Nameless
02.06.2018
14:39:34

Egor
02.06.2018
14:39:39
Потому что внутри него находится return, который возвращает в функцию наверху

Google

Egor
02.06.2018
14:40:12
Короче, кто там паззлеры делает на конференции, пихайте этот кейс себе в доклад

Nameless
02.06.2018
14:40:19
выглядит все равно плохо

Igor
02.06.2018
14:40:48

balolam
02.06.2018
14:40:51
Почему бы не использовать producer?

Nameless
02.06.2018
14:41:50

Egor
02.06.2018
14:42:01
Возвращать прямо в асинк из вайла не получится, это как пытаться достать мозг через нос мизинцем ноги
Своего друга

Igor
02.06.2018
14:42:51
Как вариант, если считаешь себя умнее компилятора то повесить supresswarning
@Suppress("UNREACHABLE_CODE")
throw RuntimeException("FAIL")

Nameless
02.06.2018
14:43:28

Egor
02.06.2018
14:43:43
Причем там можно даже не исключение кидать, а возвращать значение, чтобы дженерик был Inferred
Типа,
while (true) {
return@async it
}
0
С суппресс варнингом

Nameless
02.06.2018
14:45:59
Почему бы не использовать producer?
да спасибо, просто интересовало как имея конструкции которые используются у меня разрулить ситуацию красиво, и после джавы такая проблема оказалась для меня внезапной, если не ошибаюсь в джаве в подобном сценарии все нормально отработает. В котлине не эксперт

Egor
02.06.2018
14:47:23
Как говорится, если умник, то пи**уй в Руби

Igor
02.06.2018
14:47:26
По факту там все логично, Kotlin видит что из функции может вернуться
- в случае 1
Int (из return@) либо Nothing (из throw)
- в случае 2
Int (из return@) либо Unit (из всего while)
Дальше он выводит наиболее общий тип, в первом случае это Int, во втором Any.
То что компилятор не проверят, что цикл бесконечный - ну блин, это очень узкий кейс, да и у нас тут не Coq с Idris

Nameless
02.06.2018
14:48:07

balolam
02.06.2018
14:50:12

Nameless
02.06.2018
14:50:26

Google

Nameless
02.06.2018
14:50:52
В джава нет корутин)
да тут проблема с дженириками\определением возвращаемого значения, а не с корутинами

balolam
02.06.2018
14:51:15
Тут как бы компромис
Почитайте что такое Nothing и какие плюшки он несёт, вы удивитесь, но вы это использовали и не замечали
Дак что нет. С дженериками тут даже лучше
Просто не стоит переносить мышление написания кода на Java в Kotlin, отличия как бы есть

Egor
02.06.2018
14:53:35

balolam
02.06.2018
14:54:07
Зато теперь Java втянула себе var)

Egor
02.06.2018
14:54:11
Ссаные @FunctionalInterfaceы это насмешка над ФП

Vladimir
02.06.2018
15:21:27
А компилятор ругается тоже, или только инспекция в идее?
Может, он не считает этот код недостижимым

Quantum Harmonizer
02.06.2018
15:28:48