kotlin 函式閉包
阿新 • • 發佈:2018-12-19
//閉包 //函式執行的環境就是閉包 //持有函式的執行環境 //函式內部可以定義函式 也可以定義類 val string = "hello world" fun makeFun():()->Unit{ var count = 0 return fun(){ println(++count) } } fun fibonacci():()->Long{ var first = 0L var second = 1L return fun():Long{ val result = second second+=first first = second-first return result } } fun fibonacci1(): Iterable<Long> { var first = 0L var second = 1L data class Person(val name:String) return Iterable { object:LongIterator(){ override fun hasNext() = true override fun nextLong(): Long { val result = second second+=first first = second-first return result } } } } fun add(x:Int)=fun(y:Int) = x+y fun add1(x:Int):(Int)->Int{ return fun(y:Int):Int{ return x+y } } fun main(args: Array<String>) { val x = makeFun() x() x() x()//函式的作用域沒有被釋放 val f = fibonacci() println(f()) println(f()) println(f()) for(i in fibonacci1()){ if(i > 100)break println(i) } var add5 = add(5) println(add5(2)) }