老师看完闭包这一节,我还是有点疑问

来源:5-5 闭包(函数式编程的福音)

Da丶

2019-02-18

因为之前一直用Java,不太了解闭包的概念,学完课程之后,我明白了闭包的概念是:

在一个函数A中返回了另一个函数B,只有函数B才可以访问函数A中的内容,这个现象的概念叫做闭包

我有两个疑问:
第一个是:

@kotlin.internal.InlineOnly
public inline fun <T> T.apply(block: T.() -> Unit): T {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    block()
    return this
}

想apply这种方法当函数(表达式)以参数的形式传递进去,这属不属于闭包?

第二个疑问是:
看了您的例子,我还是不太明白闭包到底可以用在哪里?老师能不能给一些 常用的地方,或者深刻的例子.能够更好的加深理解.

写回答

1回答

bennyhuo

2019-02-18

闭包简单说就是函数内部可以有状态,这个得前提就是函数本身是对象。javascript 当中会经常用到,java背景的程序一般都会按照JAVA的思路写,不常见到了。比如柯里化之类的特性就需要基于这个特性。

apply这个严格意义上不涉及闭包,因为没有涉及状态,也没有在函数内部定义函数。

0
5
Da丶
回复
bennyhuo
一定~
2019-02-18
共5条回复

Android首选开发语言Kotlin入门与进阶

Google I/O大会钦定Android一级开发语言,现在不学,等待何时

3122 学习 · 387 问题

查看课程