Size: a a a

Kotlin Community

2020 July 28

AM

Andrew Mikhaylov in Kotlin Community
Denys
а) Получить модельку из базы, изменить поле, сохранить модельку.
б) Сделать SQL запрос. :)
Сохранение объекта после изменения PK в руки не приводит к созданию нового объекта вместо обновления текущего?
источник

D

Denys in Kotlin Community
источник

D

Denys in Kotlin Community
Andrew Mikhaylov
Сохранение объекта после изменения PK в руки не приводит к созданию нового объекта вместо обновления текущего?
А, просмотрел что там PK. Насколько я помню, update не работает как upsert. Но и не изменит записи совсем.
источник

D

Denys in Kotlin Community
Нужно атомарный Insert + Delete делать для изменения PK
источник

AM

Andrew Mikhaylov in Kotlin Community
Больцман Мерфи
Всем привет, есть вопросик, как мне добавить в im к уже существующей записи еще часть строки?
^
источник

AM

Andrew Mikhaylov in Kotlin Community
Denys
Нужно атомарный Insert + Delete делать для изменения PK
Ну и славненько, я уж подумал, что слишком умный (в плохом смысле) этот ваш рум :)
источник

D

Denys in Kotlin Community
Andrew Mikhaylov
Ну и славненько, я уж подумал, что слишком умный (в плохом смысле) этот ваш рум :)
Он и неплох как раз тем, что тупой. :)
источник

AM

Andrew Mikhaylov in Kotlin Community
Denys
Он и неплох как раз тем, что тупой. :)
Да-да, я такую картину и сложил примерно.
Пора, конечно, прекращать по чатам либы осваивать, но нужды трогать его пока не было 😅
источник
2020 July 29

SV

Sunny V in Kotlin Community
Hi folks.
источник

SV

Sunny V in Kotlin Community
A very dumb question

suspend fun doSomething(str: Optional<String>) {
 // Error: Suspension functions can be called only within coroutine body
 str.map { doSomethingElse() }
}

suspend fun doSomethingElse() { }
источник

SV

Sunny V in Kotlin Community
why is that a problem while doing this is okay

suspend fun doSomething(str: Optional<String>) {
 if (str.isPresent) {
   doSomethingElse()
 }
}
источник

PE

Pavel Erokhin in Kotlin Community
Sunny V
A very dumb question

suspend fun doSomething(str: Optional<String>) {
 // Error: Suspension functions can be called only within coroutine body
 str.map { doSomethingElse() }
}

suspend fun doSomethingElse() { }
wrap calling doSomethingElse function with runBlocking or create coroutine context
источник

AM

Andrew Mikhaylov in Kotlin Community
Note that runBlocking is quite specific thing created to be a single point of communication between blocking and suspending worlds. E.g. all calls to runBlocking share the same thread and can block each other. So try to minimize number of places it's used in.
источник

SV

Sunny V in Kotlin Community
Right.. I don't want to use runBlocking here.
источник

SV

Sunny V in Kotlin Community
However, I can't seem to understand why a coroutine context is needed when I use a str.map { suspendFun() }
источник

AM

Andrew Mikhaylov in Kotlin Community
Sunny V
However, I can't seem to understand why a coroutine context is needed when I use a str.map { suspendFun() }
Is Optional.map by chance not an inline function?
источник

AM

Andrew Mikhaylov in Kotlin Community
As collections' one is an inline one, so this suspend -> non-suspend -> suspend chain effectively disappears during inlining.
источник

SV

Sunny V in Kotlin Community
it's java.util.Optional
источник

SV

Sunny V in Kotlin Community
So, no. It's not an inline function.
источник

AM

Andrew Mikhaylov in Kotlin Community
Well, that's the reason then. map is not suspend, so you can't call suspending function from there. And it's not inline so isn't getting eliminated similarly to Iterable.map from Kotlin.
источник