Size: a a a

Kotlin Community

2020 December 27

v

vorobyoff in Kotlin Community
Тогда запустить корутину на каждую функцию, async, а результат через await получать
источник

DY

Dawin York in Kotlin Community
EvGem
Пусть есть N suspend функций, которые возвращают Boolean.
Как сделать так, чтобы они выполнились параллельно и к ним была применена операция ИЛИ?
Можно завернуть их в async и делать await для каждой, но есть минус: await будет применен по очереди к каждой функции. То есть если последняя функция выполнится быстрее остальных и вернет true, то остальные ждать бессмысленно, но реализация с await будет ждать.
.
источник

v

vorobyoff in Kotlin Community
Как вариант
источник

DY

Dawin York in Kotlin Community
Конец текста
источник

VP

Vladimir Petrakovich in Kotlin Community
EvGem
Пусть есть N suspend функций, которые возвращают Boolean.
Как сделать так, чтобы они выполнились параллельно и к ним была применена операция ИЛИ?
Можно завернуть их в async и делать await для каждой, но есть минус: await будет применен по очереди к каждой функции. То есть если последняя функция выполнится быстрее остальных и вернет true, то остальные ждать бессмысленно, но реализация с await будет ждать.
Из коробки насколько я знаю ничего нет, но вот такое вроде работает
https://pl.kotl.in/qctwz7dlH
источник

E

EvGem in Kotlin Community
Vladimir Petrakovich
Из коробки насколько я знаю ничего нет, но вот такое вроде работает
https://pl.kotl.in/qctwz7dlH
спасибо за coroutineContext.cancelChildren()
у меня такая реализация получилась
https://pl.kotl.in/KkyV2-q1D
источник

VP

Vladimir Petrakovich in Kotlin Community
EvGem
спасибо за coroutineContext.cancelChildren()
у меня такая реализация получилась
https://pl.kotl.in/KkyV2-q1D
Тут отмена может не сработать, если вернувшая true функция выполнится раньше, чем закончится цикл
источник

E

EvGem in Kotlin Community
Vladimir Petrakovich
Тут отмена может не сработать, если вернувшая true функция выполнится раньше, чем закончится цикл
да есть такое, спасибо
источник

IP

Iaroslav Postovalov in Kotlin Community
я тут такой пазлер придумал гадкий.

class A : Number(){
   override fun toByte(): Byte = 0
   override fun toChar(): Char = 42.toChar()
   override fun toDouble(): Double = 0.0
   override fun toFloat(): Float = 0f
   override fun toInt(): Int = 64
   override fun toLong(): Long = 0
   override fun toShort(): Short = 0
}
fun main() {
   val code = A()
   val c = code.toChar()
   println(c)
}

что выдаст этот код, если после val code добавить : Number?
1) * (42)
2) @ (64)
3) NoSuchMethodException
4) (0)
источник

AN

Alexander Nozik in Kotlin Community
Iaroslav Postovalov
я тут такой пазлер придумал гадкий.

class A : Number(){
   override fun toByte(): Byte = 0
   override fun toChar(): Char = 42.toChar()
   override fun toDouble(): Double = 0.0
   override fun toFloat(): Float = 0f
   override fun toInt(): Int = 64
   override fun toLong(): Long = 0
   override fun toShort(): Short = 0
}
fun main() {
   val code = A()
   val c = code.toChar()
   println(c)
}

что выдаст этот код, если после val code добавить : Number?
1) * (42)
2) @ (64)
3) NoSuchMethodException
4) (0)
Там какая-то фигня была конкретно с Number, я года два назад писал issue. Но сейчас уже не помню
источник

с#

саша сок #KotlinGang... in Kotlin Community
Iaroslav Postovalov
я тут такой пазлер придумал гадкий.

class A : Number(){
   override fun toByte(): Byte = 0
   override fun toChar(): Char = 42.toChar()
   override fun toDouble(): Double = 0.0
   override fun toFloat(): Float = 0f
   override fun toInt(): Int = 64
   override fun toLong(): Long = 0
   override fun toShort(): Short = 0
}
fun main() {
   val code = A()
   val c = code.toChar()
   println(c)
}

что выдаст этот код, если после val code добавить : Number?
1) * (42)
2) @ (64)
3) NoSuchMethodException
4) (0)
4 по идее ?
источник

IP

Iaroslav Postovalov in Kotlin Community
2
источник

с#

саша сок #KotlinGang... in Kotlin Community
Хах
источник

IP

Iaroslav Postovalov in Kotlin Community
Alexander Nozik
Там какая-то фигня была конкретно с Number, я года два назад писал issue. Но сейчас уже не помню
в общем, если не указывать тип, то оно вызовет toChar и получит 42, как и надо. а если указать тип, то оно не будет знать, есть ли там toChar и вставит intValue (который забриджован к toInt), а потом I2C
источник

IP

Iaroslav Postovalov in Kotlin Community
источник

IP

Iaroslav Postovalov in Kotlin Community
ну и я даже не представляю, как это можно починить нормально. по логике нужен интринсик, который будет через рефлект чекать наличие toChar. и если есть, то тащить его, если нет, тащить intValue+I2C
источник

IP

Iaroslav Postovalov in Kotlin Community
по сути иметь toChar в рамках методов Number - это ошибка природы
источник

AN

Alexander Nozik in Kotlin Community
Iaroslav Postovalov
ну и я даже не представляю, как это можно починить нормально. по логике нужен интринсик, который будет через рефлект чекать наличие toChar. и если есть, то тащить его, если нет, тащить intValue+I2C
Надо не пользоваться родными конверсиями Number. К сожалению, сам Number так себе задизайнен в жаве, а в котлин дополнительно поломан в допотопные вермена
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Надо не пользоваться родными конверсиями Number. К сожалению, сам Number так себе задизайнен в жаве, а в котлин дополнительно поломан в допотопные вермена
и в итоге где он так себе задизайнен, в котлине или джаве
источник

IP

Iaroslav Postovalov in Kotlin Community
саша сок #KotlinGang
и в итоге где он так себе задизайнен, в котлине или джаве
везде
источник