成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認(rèn)真做好每個細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及軟裝設(shè)計(jì)等,在重慶網(wǎng)站建設(shè)、成都全網(wǎng)營銷、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。

前言

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

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

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)
 }
}

程序?qū)?zhí)行50次然后退出。

實(shí)現(xiàn)枚舉器

上面的代碼使用的是序列功能,并非是常見的枚舉器,下面的代碼更像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)
 }
}

實(shí)現(xiàn)類似Linq

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

//將輸入的數(shù)據(jù) + 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 ")
 }
 }
}

//將多個數(shù)據(jù)聚合到一個數(shù)據(jù)
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功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章題目:Kotlin怎么使用類似C#的yield功能
轉(zhuǎn)載來源:http://jinyejixie.com/article6/pgehog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名電子商務(wù)、品牌網(wǎng)站設(shè)計(jì)、軟件開發(fā)外貿(mào)建站、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
商水县| 本溪| 福安市| 厦门市| 新疆| 雅安市| 望江县| 偏关县| 绵竹市| 化隆| 石林| 乌兰察布市| 阳江市| 赫章县| 宕昌县| 云南省| 麟游县| 勃利县| 图木舒克市| 永州市| 浦城县| 衡水市| 丰县| 景泰县| 娄烦县| 安岳县| 泰和县| 乌什县| 遂平县| 白沙| 西华县| 青河县| 鲁山县| 沐川县| 上高县| 文成县| 大新县| 乌苏市| 石嘴山市| 朝阳区| 庆阳市|