我想知道我的代码是否代表closure concept?
object Closure {
val fun = (x: Int) => x + 1
def clj = (y: Int) => y * fun(y)
}这是我的跑腿码。
object App {
def main(args: Array[String]) {
val c = Closure
val result = c.clj(10)
println(result)
}
}假设,闭包代码是
def clj = (y: Int) => y * fun(y)或者我错了?
发布于 2015-03-21 23:29:05
它不是,因为它没有关闭任何东西。
这将是一个结束:
object Foo {
def clj(a: Int) = { (b: Int) => a + b }
}这是:
object的Foo ..。clj() ..。返回的内部函数在调用a时捕获(或关闭) clj()的值,在概念上保持其活动。
因此:
val f1 = Foo.clj(10) // returns a function that adds 10 to whatever is passed
f1(100) // => 110维基百科关于闭包的条目实际上包含了对这个概念的恰当描述。
发布于 2015-03-21 21:24:14
正如我所看到的闭包概念,是的,clj中的代码表示闭包,因为它引用了一个外部函数fun,在闭包中这是一个所谓的“环境”。
https://stackoverflow.com/questions/29186790
复制相似问题