一般针对某个序列,你可能会定义一个只要序列有新值产生就被调用一下的函数,这样的函数叫迭代器函数。
generateSequence 函数接受一个初始种子值作为序列的起步值,在用 generateSequence 定义的序列上调用一个函数时,generateSequence 函数会调用你指定的迭代器函数,决定下一个要生产的值。
1.我们先来个运算扩展函数
// 这方法为Int的扩展函数
fun Int.isPrime():Boolean{
//从2为起始数到本身的循环
(2 until this).map {
//这里拿本身与它和2之间的数相除
if (this % it==0){
return false
}
}
return true
}
generateSequence 用法
fun main() {
//正常写法
//1到 5000之间 取出了它本身除以从2到它本身之间不能整除的数 只取1000
val take = (1..5000).toList().filter {
it.isPrime()
}.take(1000)
print(take)
//generateSequence函数写法
//参数 seed是指从哪里开始 表达式每次加一就是初始值加一
val take1 = generateSequence(2) { value -> value + 1 }
//取出符合条件的数字
.filter { it.isPrime()}.
// take 控制 filter里的条件在为true的情况下要运行多少次
take(1000)
print(take1.toList().size)
}