亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kotlin怎么使用類似C#的yield功能

發布時間:2021-02-08 10:40:30 來源:億速云 閱讀:156 作者:小新 欄目:移動開發

這篇文章主要介紹Kotlin怎么使用類似C#的yield功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

前言

用過c#的可能對 yield 關鍵字愛不釋手,那么在像我這種被迫上java賊船的人,就想找到類似的功能。

我使用的是kotlin,下面的方法演示了產生一個序列的功能。

val fibonacciSeq = buildSequence {
 var a = 0
 var b = 1

 yield(1)

 while (true) {
 yield(a + b)

 val tmp = a + b
 a = b
 b = tmp
 }
}

fun main(args: Array<String>){
 fibonacciSeq.take(50).forEach {
 println(it)
 }
}

程序將執行50次然后退出。

實現枚舉器

上面的代碼使用的是序列功能,并非是常見的枚舉器,下面的代碼更像c#的枚舉器。

class MyList : Iterable<Int>{
 private val list = arrayOf(1,2,3,4,5,6)

 override fun iterator(): Iterator<Int> {
 return buildIterator {
 val size = list.size
 for(i in 0 until size) {
 yield(list[i] + i)
 }
 }
 }
}

fun main(args: Array<String>){
val list = MyList()
 for (p in list) {
 println(p)
 }
}

實現類似Linq

我們在使用Linq時可以將序列不斷的變換,Kotlin也可以很方便的處理。

//將輸入的數據 + 1
fun Do1(seq : Sequence<Int>) : Sequence<Int>{
 return buildSequence {
 for (i in seq){
 yield(i + 1)
 }
 }
}

//變換成字符串
fun Do2(seq : Sequence<Int>) : Sequence<String>{
 return buildSequence {
 for (i in seq){
 yield("hello $i ")
 }
 }
}

//將多個數據聚合到一個數據
fun Do3(seq : Sequence<String>) : Sequence<String>{
 return buildSequence{
 var result = ""
 var count = 0

 for (i in seq){
 result += i
 count++
 if(count == 3){
 yield(result)
 result = ""
 count = 0
 }
 }

 if(count > 0){
 yield(result)
 }
 }
}

fun main(args: Array<String>){
 val data = arrayOf(1,2,3,4,5,6,7,8)
 val result = Do3(Do2(Do1(data.asSequence())))
 for (p in result){
 println(p)
 }
}

以上是“Kotlin怎么使用類似C#的yield功能”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂州市| 内乡县| 江源县| 内江市| 荔波县| 虞城县| 行唐县| 新津县| 长丰县| 华池县| 汝南县| 成安县| 齐河县| 营山县| 乌兰察布市| 南溪县| 商南县| 津南区| 正蓝旗| 丹江口市| 吴旗县| 慈溪市| 益阳市| 乃东县| 攀枝花市| 平安县| 华阴市| 赤水市| 黄冈市| 绥棱县| 唐山市| 罗甸县| 包头市| 龙陵县| 余姚市| 南江县| 宁乡县| 台中县| 衡东县| 富宁县| 阳城县|