赞
踩
这里用到了 take函数
他是从
元数据里面取出来对应个数得元素并且返回
如果没到这个元素也返回当前元素
就是我要取出来1000个数据但是实际里面就是670个 那么他就会返回670个
如果里面1001 个那么他就取出来1000个数据
generateSequence
般针对某个序列,你可能会定义一个只要序列有新值产生就被调用一下的函数,这样的函数叫迭代器函数。
generateSequence 函数接受一个初始种子值作为序列的起步值,在用 generateSequence 定义的序列上调用一个函数时,generateSequence 函数会调用你指定的迭代器函数,决定下一个要生产的值
上代码
- fun Int.isPrime(): Boolean {
- (2 until this).map {
- if (this % it == 0) return false
- }
- return true
- }
-
-
- fun main() {
- //你想产生头1000个素数
- //假定 0-5000之内,可以找到1000个素数
- val toList = (1..5000).toList().filter { it.isPrime() }.take(1000)
- //打印发现只有670个素数 正常想法是用while 来完成这个需求。but。。也可以通过一些特殊手段来完成
- println(toList.size)
- println(toList)
-
- // 我们可以通过序列生成想要得数据
- //seed 1 是起始值 value+1 就是步长是1
- val content = generateSequence(1) { value ->
- value + 1
- }.filter { it.isPrime() }.take(1000).toList()
- println(content.size)
- println(content)
-
-
- }
相比 while得冗余运算,非常得时尚。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。