关于高阶函数的关键字
来源:5-3 常见高阶函数(forEach,map,flatmap,fold,reduce,filter,takeWhile,let,apply,with,use)-2

慕妹2978617
2019-11-21
![在视频中老师总是会讲解一些高阶函数的源码,自己会暂停去思考这个实现的逻辑。都是费了好大的力气才看懂,看是简单,可是如果真机写 比如let 实现相同的功能,但是自己却写不出来,因为这个泛型 返回值真的把我搞糊涂了。老师可以就这两个方法 着重帮我讲解下 T R 作为传入参数和返回参数的具体所指和作用吗 还有apply为什么这么写可以直接不用对象.
写回答
1回答
-
bennyhuo
2019-11-21
泛型这个概念在后面有讲解,同学可以先了解下。这块儿对泛型的要求不高,你就把它当成某个具体的类型来看待即可。例如
你把 T 替换成 String,就得到了
fun String.apply(block: String.() -> Unit) : String { block() return this }
"还有apply为什么这么写可以直接不用对象."这个问题,要注意 block 的类型,是带有 receiver 的,换句话说,你可以理解为传进来的函数是 T 的扩展方法,所以里面就可以用 this 来引用 receiver 的成员。
这里的 receiver 指的就是 T,再举个 receiver 的例子,x.y() 这是个方法调用,其中 x 就是 y 的 receiver。
10
相似问题