Size: a a a

Kotlin Community

2020 October 29

AN

Alexander Nozik in Kotlin Community
Oleg Yukhnevich
А на код можно глянуть?)
Ссылочку бы
То может что конкретнее посоветую
Кое-что тут: https://github.com/mipt-npm/dataforge-control/blob/dev/dataforge-magix-client/src/commonMain/kotlin/hep/dataforge/control/client/MagixClient.kt. Ответная часть где-то тут: https://github.com/waltz-controls/waltz-magix-plugin. Но я сейчас хочу просто реализовать все у себя и посмотреть как оно на чистом котлине работает
источник

AA

Andrey Antipov in Kotlin Community
Vladimir Petrakovich
Войну объявили не null, а NPE. Int? - это нормальный тип, а lateinit сделали для интеропа с существующим кодом и тех, кто привык к риску.
Если говорить совсем строго, то даже не против NPE всё это, а за валидацию нуллабельности на этапе компиляции и против того, что null является обитателем любого типа. В Kotlin null является корректным значением только для нуллабельных типов.
То, как это сделано в Java даже хуже, чем просто NPE. null, ялвяющийся обитателем любого типа позволяет написать приведение типа к любому другому на дженериках, в котором нигде явно приведение типов не делается. https://hackernoon.com/java-is-unsound-28c84cb2b3f
Пример в статье, конечно, минималистичен, но в реальном коде можно такое написать случайно и не заметить.
источник

AA

Andrey Antipov in Kotlin Community
То есть, в Java возможен корректный код, с точки зрения компилятора, не использующий приведение типов, но падающий с ClassCastException во время исполнения. Не с NPE, а с CCE, что уж совсем неожиданно!
источник

OY

Oleg Yukhnevich in Kotlin Community
А что на бинарник хотите заменить? Payload?
источник

AN

Alexander Nozik in Kotlin Community
Oleg Yukhnevich
А что на бинарник хотите заменить? Payload?
Нет, добавочный сделать, но это не точно
источник

OY

Oleg Yukhnevich in Kotlin Community
Alexander Nozik
Нет, добавочный сделать, но это не точно
Сложно как-то у Вас всё)
Потом ещё гляну
И буду ждать фидбэк от Вас)
источник

AN

Alexander Nozik in Kotlin Community
Oleg Yukhnevich
Сложно как-то у Вас всё)
Потом ещё гляну
И буду ждать фидбэк от Вас)
Патамушта мы сами ещё не знаем, как оно будет. Ресерч же. постараюсь добраться побыстрее до этой штуки.
источник

с#

саша сок #KotlinGang... in Kotlin Community
слушайте, есть задача такая: нужно добавлять в очередь задачу и ждать пока она выполнится, есть ли какой-то котлин-вей это сделать?

добавил таск1 -> функция вернёт Unit когда выполнится таск 1
добавил таск2 -> функция вернёт Unit после того как выполнится таск 1 и после него таск2

fun getInQueue() {
   // добавление в очередь и ожидание выполнения
}
источник

QH

Quantum Harmonizer in Kotlin Community
саша сок #KotlinGang
слушайте, есть задача такая: нужно добавлять в очередь задачу и ждать пока она выполнится, есть ли какой-то котлин-вей это сделать?

добавил таск1 -> функция вернёт Unit когда выполнится таск 1
добавил таск2 -> функция вернёт Unit после того как выполнится таск 1 и после него таск2

fun getInQueue() {
   // добавление в очередь и ожидание выполнения
}
Feature#get, Deferred#await
источник

с#

саша сок #KotlinGang... in Kotlin Community
Quantum Harmonizer
Feature#get, Deferred#await
ну деферреды не подойдут, потому что мне именно синхронно надо выполнять по очереди
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
ну деферреды не подойдут, потому что мне именно синхронно надо выполнять по очереди
NewSingleThreadExecutor
источник
2020 October 30

SE

Sobolev Erik in Kotlin Community
Andrey Antipov
Если говорить совсем строго, то даже не против NPE всё это, а за валидацию нуллабельности на этапе компиляции и против того, что null является обитателем любого типа. В Kotlin null является корректным значением только для нуллабельных типов.
То, как это сделано в Java даже хуже, чем просто NPE. null, ялвяющийся обитателем любого типа позволяет написать приведение типа к любому другому на дженериках, в котором нигде явно приведение типов не делается. https://hackernoon.com/java-is-unsound-28c84cb2b3f
Пример в статье, конечно, минималистичен, но в реальном коде можно такое написать случайно и не заметить.
Ого. Вот это поворот =)). Спасибо всем за объяснения и статьи))
источник

IP

Iaroslav Postovalov in Kotlin Community
можно ли это записать короче:
fun getNameOfEntity(entity: NameableEntity) = entity.defaultName.orEmpty().takeIf(String::isNotEmpty) ?: "KARASIK"
источник

AM

Andrew Mikhaylov in Kotlin Community
Iaroslav Postovalov
можно ли это записать короче:
fun getNameOfEntity(entity: NameableEntity) = entity.defaultName.orEmpty().takeIf(String::isNotEmpty) ?: "KARASIK"
Я не совсем понял, а зачем .orEmpty().takeIf(isNotEmpty())
?
источник

PE

Pavel Erokhin in Kotlin Community
Iaroslav Postovalov
можно ли это записать короче:
fun getNameOfEntity(entity: NameableEntity) = entity.defaultName.orEmpty().takeIf(String::isNotEmpty) ?: "KARASIK"
просто до takeIf сократи
источник

IP

Iaroslav Postovalov in Kotlin Community
Andrew Mikhaylov
Я не совсем понял, а зачем .orEmpty().takeIf(isNotEmpty())
?
defaultName - это String?
если оно пустое или null, то я хочу "KARASIK"
источник

IP

Iaroslav Postovalov in Kotlin Community
Andrew Mikhaylov
Я не совсем понял, а зачем .orEmpty().takeIf(isNotEmpty())
?
ну если там null, то оно вернет ""
источник

с#

саша сок #KotlinGang... in Kotlin Community
Iaroslav Postovalov
ну если там null, то оно вернет ""
а ты поставь ?.
источник

IP

Iaroslav Postovalov in Kotlin Community
а, блин
источник

с#

саша сок #KotlinGang... in Kotlin Community
там же всё равно в конце ?:
источник