首 页 行业资讯 新车 试驾评测 养车用车 车型库

kotlin中判断装箱后的Int值是不是相等

发布网友 发布时间:2022-04-20 16:54

我来回答

1个回答

热心网友 时间:2023-10-04 08:38

Kotlin比Java更方便的地方,其中之一是可以将函数作为参数。
上面三者都是将函数作为其它函数的参数来使用,其形式虽然简单,但理解并不简单。
一、共同点
三者的返回值相同,均为Unit,即没有返回值。
当然有返回值也可以,比如返回一个泛型R,或者是一个具体的值Int等
如:

但是这不是重点,要理解三者,主要是分析前面的部分,这里返回Unit只是为了方便理解。
二、定义形式
可以结合Kotlin自带的作用域函数来理解:
apply:

also:

自定义一个使用()->Unit的例子:

三、使用

上面的例子说明了以下几点:
1、T.()->Unit 的函数体中可以直接使用T代表的对象,即用this代表对象
2、(T) -> Unit 将T表示的对象作为实参通过函数参数传递进来,供函数体使用
3、 ()->Unit与T表示的对象没有直接联系,只能通过外部T实例的变量来访问对象

四、理解
T.()->Unit 中用this代表对象,而this的使用一般是一个类的成员函数中用来表示该类的实例对象本身,比如,为Person类加一个函数:

所以我们可以这样理解,T.()->Unit相当于是给类T定义了一个扩展函数,该函数没有形参,没有返回值,当然我们也可以增加参数与返回值,道理是一样的。
正是因为T.()为T的扩展函数,所以可以在函数体里直接访问T对象的属性或者成员函数。

(T) -> Unit与 ()->Unit只是一个普通的函数,一个带有参数,类型为T,另一个没有参数而已。
(T) -> Unit在使用it表示实参,是Lambda表达式所规定

五、总结
1、()->Unit与(T) -> Unit是相同的,只是一个带参,一个不带参
(T) -> Unit通过形参T可将对象作为实参传给函数,所以函数体里能通过it或者指定名称的方式来访问该对象

2、T.()->Unit 等同于为T定义了一个无参数的扩展函数,所以在函数体内可以直接通过this或省略来访问T代表的对象

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com