赞
踩
一般针对某个序列,你可能会定义一个只要序列有新值产生就被调用一下的函数,这样的函数叫迭代器函数。
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)
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。