函数定义内部的Is return也是kotlin中的一个表达式


fun trueOrFalse(exp: Boolean): String { 
if (exp) return "It's true!" 
return "It's false"            
}

我正在读";原子kotlin";书中说这个函数包含2个表达式,所以我只想是函数返回kotlin中的表达式?

与大多数编程语言不同,Kotlin不将return ...视为语句,而是将其视为表达式。

编译器为此类表达式推断的类型为Nothing,这意味着该表达式的求值永远不会为任何值,并且控制流在此类表达式之后也不会正常继续(类似于throw-表达式(。

一个证明它是一个表达式的例子是:

val x = when (coin) {
0 -> 123
1 -> (return 456) as Nothing
else -> error("unexpected coin value")
}

(可运行样本(

由于return ...表达式的类型为Nothing,将其用作其他复合表达式的一部分没有多大意义。然而,也有一些方便的情况:

  • val x = if (foo) bar() else return baz()
  • val x = foo() ?: return bar()

有趣的事实:像return return return 5这样的表达式是有效的,尽管它们会为无法访问的代码触发编译器警告。

相关内容

最新更新