kotlin方法声明大括号前面有等号=和没有等号的区别?

kotlin方法声明大括号前面有等号=和没有等号的区别?比如说下面这两个方法声明。

加载中...

加载中...

test1方法执行完成之后会输出hello,但是test2执行之后没有输出。

kotlinfunction
1
344
小课
小课2022-06-05 20:34
1 个回答

在kotlin中,不带=号的方法申明方式很常见,就是定义一个普通的方法,它等效于下面这个方法申明,但是因为返回类型和返回值是Unit,所以可以省略。

加载中...

但是带=号的方法申明分两种情况,第一种情况是=号后面是单个表达式,比如下面这两个方法。

加载中...

它们还是普通方法,只不过因为后面只有一个表达式,所以可以省略大括号,它们分别等效于下面两个方法。

加载中...

第二种情况是=号后面是一个lambda表达式,这样申明的是高阶函数,也就是函数的返回值也是一个函数,提问中的test2方法就是一个高阶函数,它等效于下面这种申明。

加载中...

所以直接调用test2(),是不会输出hello,它仅仅是返回了一个函数,但是并没有执行返回的这个函数,如果想要输出hello,可以这样调用。

加载中...
1
已修改
小课
小课2022-06-05 20:59
你的回答

内容