一、闭包
闭包目前非常火,因为闭包的出现,现在支持函数式编程就不再是梦想了。
二、什么是闭包
1.函数的运行环境
2.持有函数运行状态
3.函数内部可以定义函数
4.函数内部也可以定义类
三、来看一下小例子
package net.println.kotlin.chapter5.closure
import java.util.*
/**
* @author:wangdong
* @description:
*/
val string = "HelloWorld"
/**定义一个函数*/
fun makeFun():() -> Unit{
var count = 0
return fun(){
println(++count)
}
}
/**再定义个fibonacci方法,斐波拉契序列*/
fun fibonacci(): Iterable<Long>{
var first = 0L
var second = 1L
return Iterable {
object : LongIterator(){
override fun nextLong(): Long {
val result = second
second += first
first = second - first
return result
}
override fun hasNext() = true
}
}
}
fun main(args: Array<String>) {
val x = makeFun()
x()
for (i in fibonacci()){
if (i > 100)break
println(i)
}
val add5 = add(13)
println(add5(56))
}
fun add(x: Int):(Int) -> Int{
return fun(y:Int):Int{
return x+y
}
}
好了,结束了!