如果 if 表达式只有一个分支, 或者分支的结果是 Unit , 它的值就是 Unit 。
if-else语句规则:
if后的括号不能省略,括号里表达式的值最终必须返回的是布尔值
如果条件体内只有一条语句需要执行,那么if后面的大括号可以省略,但这是一种极为不好的编程习惯。
对于给定的if,else语句是可选的,else if 语句也是可选的
else和else if同时出现时,else必须出现在else if 之后
如果有多条else if语句同时出现,那么如果有一条else if语句的表达式测试成功,那么会忽略掉其他所有else if和else分支。
如果出现多个if,只有一个else的情形,else子句归属于最内层的if语句
When表达式
when{: .keyword}替代了C语言风格的switch操作符。最简单的形式如下:
when{: .keyword}将它的参数和所有的分支条件进行比较,直到某个分支满足条件。when{: .keyword}既可以被当做表达式使用也可以被当做语句使用。如果它被当做表达式,符合条件的分支的值就是整个表达式的值,如果当做语句使用,则忽略单个分支的值。
else{: .keyword}分支将被执行如果其他分支都不满足条件。如果when{: .keyword}作为一个表达式被使用,else{: .keyword}分支是必须的,除非编译器能够检测出所有的可能情况都已经覆盖了。
when{: .keyword}也可以用来替代if{: .keyword}-else{: .keyword} if{: .keyword}链。如果不提供参数,所有的分支条件都是简单的布尔值,而当一个分支的条件返回true时,则调用该分支: