kotlin方法声明大括号前面有等号=和没有等号的区别?比如说下面这两个方法声明。
和
test1方法执行完成之后会输出hello
,但是test2执行之后没有输出。
在kotlin中,不带=
号的方法申明方式很常见,就是定义一个普通的方法,它等效于下面这个方法申明,但是因为返回类型和返回值是Unit,所以可以省略。
但是带=
号的方法申明分两种情况,第一种情况是=
号后面是单个表达式,比如下面这两个方法。
它们还是普通方法,只不过因为后面只有一个表达式,所以可以省略大括号,它们分别等效于下面两个方法。
第二种情况是=
号后面是一个lambda表达式,这样申明的是高阶函数,也就是函数的返回值也是一个函数,提问中的test2方法就是一个高阶函数,它等效于下面这种申明。
所以直接调用test2()
,是不会输出hello
,它仅仅是返回了一个函数,但是并没有执行返回的这个函数,如果想要输出hello
,可以这样调用。
内容