最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin如何使用類似C#的yield功能詳解

 更新時(shí)間:2018年06月22日 10:22:26   作者:編寫人生  
在語(yǔ)句中使用 yield 關(guān)鍵字,則指示在的方案、運(yùn)算符或 get 訪問器是迭代器。下面這篇文章主要給大家介紹了關(guān)于Kotlin如何使用類似C#的yield功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧

前言

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

關(guān)于c#中的yield關(guān)鍵字大家可以參考這篇文章:http://m.fzitv.net/article/63859.htm

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

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

我們?cè)谑褂肔inq時(shí)可以將序列不斷的變換,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 ")
 }
 }
}

//將多個(gè)數(shù)據(jù)聚合到一個(gè)數(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)
 }
}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

右玉县| 安塞县| 霍山县| 资阳市| 庆城县| 梓潼县| 宜宾县| 驻马店市| 肥乡县| 如皋市| 时尚| 杂多县| 浮梁县| 沙雅县| 恭城| 松溪县| 棋牌| 三亚市| 大宁县| 察雅县| 永寿县| 昆明市| 监利县| 屏东市| 永春县| 平塘县| 双峰县| 图们市| 平利县| 耒阳市| 潞城市| 芜湖市| 铜川市| 英山县| 盘山县| 塔河县| 奉新县| 富顺县| 台中市| 岳阳市| 金乡县|