美文网首页
2.4.3 复合表达式:更好的表达能力 2021-07-15

2.4.3 复合表达式:更好的表达能力 2021-07-15

作者: AndYMJ | 来源:发表于2021-07-15 23:58 被阅读0次

相比语句而言,表达式更倾向于自成一块,避免与上下文共享状态,互相依赖,因此我们可以说它具备更好的 隔绝性 。隔绝性意味着杜绝了副作用,因此我们用表达式描述逻辑可以更加安全,此外,表达式通常也具备更好的表达能力。

典型的一个例子就是表达式更容易进行组合。由于每个表达式都具备值,并且也可以将另一个表达式作为组成其自身的一部分,所以我们可以写出一个复合表达式。举个例子:

val res : Int?=try{

if(result.sucess){

jsonDecode(result.response)

} else null

} catch(e: JsonDecodeException){

null

}

这个程序描述了获取一个HTTP响应结果,然后进行json解码,最终赋值给res变量的过程。它向我们展示了Kotlin如何利用多个表达式组合表达能力:

1 . try在Kotlin中也是一个表达式,try/catch/finally语法的返回值类型由try或catch部分决定,finally不会影响;

2. 在Kotlin中,if-else很大程度上代替了传统三元运算符的做法,虽然增加了语法词数量,但是减少了概念,同时更利于阅读。

3. if - else的返回值即try部分的返回值,最终的指由try或catch部分决定。

--------------------------

Kotlin中的“?”

虽然Kotlin没有采用三木运算符,然而它存在很像的语法“?”。注意,这里的问号和冒号必须放在一起使用,他被叫做Elvis运算符,或者null合并运算符。由于Kotlin可以用“?”来表示一种类型的可null性,我们可以用“?:”来给一种可空类型的变量指定为空情况下的值,它有点类似Scala中的getOrElse方法。你可以通过以下的例子理解Elvis运算符:

val maybeInt :Int?=null

>>> maybeInt ?: 1

1

-----------------------------

是不是觉得相当优雅?接下来,我们再来介绍Kotlin中的when表达式,它比我们熟悉的Switch语句要强大的多。

相关文章

网友评论

      本文标题:2.4.3 复合表达式:更好的表达能力 2021-07-15

      本文链接:https://www.haomeiwen.com/subject/zvkvpltx.html