fun trueOrFalse(exp: Boolean): String {
if (exp) return "It's true!"
return "It's false"
}
我在读《原子kotlin》一书,书中说这个函数包含2个表达式,所以我只想知道函数返回也是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
这样的表达式是有效的,尽管它们会触发编译器警告无法访问的代码.