Kotlin是否支持类似Python条件语句中的赋值表达式写法?
Kotlin的类似赋值表达式特性
当然有,Kotlin可以通过几种方式实现Python里这种「在条件语句中赋值并判断」的逻辑,下面是几种常用写法:
1. 直接在条件中赋值(需提前声明变量)
和Python海象运算符的逻辑最接近,利用Kotlin赋值表达式返回赋值结果的特性,不过变量需要提前声明为var:
val foo = listOf("a", "b", "c") var bar: Int if ((bar = foo.size) > 1) { println("List size: $bar") }
运行结果:
List size: 3
2. 用run块限定变量作用域
如果不想提前声明变量,可以用run函数创建一个局部作用域,在里面完成赋值和判断,变量只会在这个块内生效:
val foo = listOf("a", "b", "c") run { val bar = foo.size if (bar > 1) { println("List size: $bar") } }
3. 函数式风格的takeIf+let
这是更符合Kotlin函数式编程习惯的写法,无需额外声明变量,直接把判断后的结果传递到后续逻辑:
val foo = listOf("a", "b", "c") foo.size.takeIf { it > 1 }?.let { bar -> println("List size: $bar") }
内容的提问来源于stack exchange,提问作者rkr87
相关产品推荐
相关产品推荐

