[コールリン1.4 ]呼び出し可能な参照での変換を中断する
Kotlin 1.4から、呼び出し可能な参照のサスペンド変換がサポートされます🎉 Release noteはこの機能についてあまり言いません、しかし、あなたが
つのフローを結合して
Kollin 1.4から、上記のコードを簡素化できます.
Bounus :
Flow#combine()
を使うとき、それは本当に役に立ちます.つのフローを結合して
collect()
で使用するふりをしましょう.Kollin 1.4以前では、次のようにコードを書くことができます.suspend fun before4_1() {
combine(
flowA, flowB
) { a, b ->
a to b
}.collect {
val a = it.first
val b = it.second
println("$a and $b")
}
}
val flowA = flowOf(1, 2)
val flowB = flowOf(3, 4)
このコードは冗長であり、あまり見えません(あまりにも多くのa
Sとb
S)!😩) Kollin 1.4から、上記のコードを簡素化できます.
suspend fun from1_4() {
combine(
flowA, flowB, ::Pair
).collect { (a: Int, b: Int) ->
println("$a and $b")
}
}
val flowA = flowOf(1, 2)
val flowB = flowOf(3, 4)
Kollin 1.4以前では、combine()
の3番目のパラメータの型がサスペンド関数であるため、コンパイルエラーが発生します.コンパイルエラーが発生するように、Pair
クラスのコンストラクタはサスペンド機能ではありません.Kotlin 1.4から、この3番目のパラメータラムダは自動的にsuspend function
に変換され、微細に動作します.Bounus :
collect()
のパラメータにはdestructuring declarationsを使います. ).collect { (a: Int, b: Int) ->
我々は、pair.first
とpair.second
の値をここで挙げることができます.タイプ定義は省略できますが、()
が必要です.Reference
この問題について([コールリン1.4 ]呼び出し可能な参照での変換を中断する), 我々は、より多くの情報をここで見つけました https://dev.to/atsuko/kotlin-1-4-suspend-conversion-on-callable-references-is-supported-5eibテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol