首页 > 解决方案 > Kotlin - 相同条件:多个 if 语句或一个 if 语句

问题描述

在 Kotlin 中,您可以使用类似于三元运算符的 if 语句。

我们可以选择这样做:

val x = if (isOdd) 1 else 2

但是如果我们有多个变量需要根据某些条件进行设置,那么用老式的方式来做这样的事情是否更正确:

val x: Int
val y: Int
val z: Int

if (isOdd) {
    x = 1
    y = 3
    z = 5
} else {
    x = 2
    y = 4
    z = 6
}

或像这样:

val x = if (isOdd) 1 else 2
val y = if (isOdd) 3 else 4
val z = if (isOdd) 5 else 6

第二种方法对我来说看起来更干净,但我想知道第一种方法是否会计算得更快,因为它只需要计算一次条件,而第二种方法需要检查条件 3 次。

第二种方式实际上更慢还是会被编译器优化?

标签: kotlin

解决方案


我更喜欢这样的东西,看起来更像 Kotlinesque:

data class Point3D(val x: Int, val y: Int, val z: Int)

fun foo(isOdd: Boolean): Point3D = if (isOdd) Point3D(1, 3, 5) else Point3D(2, 4, 6)

//or using destructureing see https://kotlinlang.org/docs/reference/multi-declarations.html)
val (x,y,z) = if (isOdd) Triple(1, 3, 5) else Triple(2, 4, 6)

它还结合了两者的优点,使用ifas 表达式,只if需要一个。(以额外的对象分配为代价)。

但是要回答你的问题。做你喜欢和认为最易读的事情。性能方面我怀疑你会有所作为。


推荐阅读