Kotlin中T.()->Unit 、(T) -> Unit 、()->Unit傻傻分不清
这三个都是函数,返回值为unit,可以返回其他值,这里返回Unit只是为了方便理解
- T.()->Unit :我理解给类T定义了一个扩展函数,该函数没有形参,没有返回值,当然也可以增加参数与返回值
- (T) -> Unit :定义一个普通函数,带有参数,类型为T,没有返回值
- () -> Unit :定义一个普通函数,没有参数,没有返回值
代码示例
下面的代码定义了类T的三个扩展函数:myApply ,myAlso ,myStandard ,分别接受一个参数,参数形式是函数,分别是T.()->Unit ,(T) -> Unit ,() -> Unit (myApply 参考标准函数库Standard.kt里的apply 函数,myAlso 参考标准函数库Standard.kt里的also 函数,去除了多余的代码。)
![在这里插入图片描述](https://img-blog.csdnimg.cn/fd5cbfc482454466930c7c5df561fb87.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI3NzUzNjg5,size_16,color_FFFFFF,t_70#pic_center)
区别
上面的代码说明了三者的区别:
- T.()->Unit :函数体中可以直接使用T代表的对象,即用this访问T代表的对象。
- (T) -> Unit :将T表示的对象作为实参通过函数参数传递进来,函数体中可以通过参数来访问T代表的对象。
- () -> Unit :和T表示的对象没有直接联系,就是一个普通的函数,没有参数。
|