中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

东丽区| 高平市| 碌曲县| 桐柏县| 井冈山市| 花莲县| 特克斯县| 陇南市| 宁化县| 通道| 高邮市| 镇安县| 明光市| 兴仁县| 七台河市| 乐业县| 仁布县| 神池县| 枣庄市| 饶平县| 德昌县| 额敏县| 麦盖提县| 琼中| 尖扎县| 惠水县| 英山县| 胶州市| 准格尔旗| 太和县| 深水埗区| 开远市| 东明县| 建瓯市| 且末县| 遵义市| 黑龙江省| 廊坊市| 平乐县| 昆山市| 自贡市|