返回
独享Kotlin妙处:善用新知识,体验编程之美
Android
2023-09-28 21:27:09
如今,Kotlin已经在我日常的代码中占据了越来越大的比重。在使用Kotlin一段时间后,我发现总结下一些个人习惯了的使用方法是非常有必要的。这篇文章主要分享了几个比较好的用法以及一些不好的用法。如果大家觉得我在性能上、可读性上或者可维护性上存在问题,欢迎一起交流。
Kotlin代码常使用与Java一样的空安全类型、可空类型和非空类型。然而我发现Kotlin中有一种语法,可以用?做后缀,表示一个空安全类型。
class Point(val x: Int, val y: Int)
val point = Point(1, 2)
println(point.x) // 1
println(point.y) // 2
上述代码中,point
变量是一个非空类型,因此我们可以在代码中直接使用它,而无需进行任何检查。如果我们要将point
变量赋予一个空值,那么代码就会报错。
val point: Point? = null
println(point.x) // 报错
println(point.y) // 报错
这时候,我们需要使用?
来明确告知编译器变量可能是空值。
val point: Point? = null
point?.x // null
point?.y // null
在Kotlin中,我们可以使用let
函数来简化代码。let
函数接收一个非空类型的参数,并在参数上执行一个函数。如果参数不为null,则函数会执行;否则,函数不会执行。
val point: Point? = Point(1, 2)
point?.let {
println(it.x) // 1
println(it.y) // 2
}
上述代码中,我们使用了let
函数来简化代码。如果point
变量不为null,那么let
函数中的代码就会执行;否则,let
函数中的代码不会执行。
在Kotlin中,我们可以使用apply
函数来简化代码。apply
函数接收一个非空类型的参数,并在参数上执行一个函数。与let
函数不同的是,apply
函数会返回参数本身,而不是函数执行的结果。
val point: Point = Point(1, 2)
point.apply {
println(x) // 1
println(y) // 2
}
上述代码中,我们使用了apply
函数来简化代码。apply
函数中的代码会直接在point
变量上执行,而不会返回任何值。