华为仓颉语言入门(6):if条件表达式

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界

仓颉语言中的 if 表达式用于根据条件的值来决定是否执行相关代码逻辑。if 表达式有三种形式:单分支的 if 表达式、双分支的 if 表达式和嵌套的 if 表达式。

单分支的 if 表达式

单分支的 if 表达式只有一个分支,其语法如下:

caj 复制代码
if (条件) {
    代码块
}

其中的条件必须是一个布尔类型的表达式,由一对匹配的花括号包围代码块。执行时,首先测试条件的值,如果条件为 true,就执行括号内的代码块;否则,不执行任何代码。

例如:

caj 复制代码
// isScorePassed 表示分数是否合格,true 表示合格,false 表示不合格
if (isScorePassed) {
    println("合格")
}
println("执行完毕")

在上述代码中,isScorePassedtrue 时,将输出:

复制代码
合格
执行完毕

如果 isScorePassedfalse,则只会输出:

复制代码
执行完毕

这表明,单分支的 if 表达式是否会执行代码,完全取决于条件的取值。值得注意的是,if 表达式的类型为 Unit,其值为 0

双分支的 if 表达式

双分支的 if 表达式包含两个分支,语法如下:

caj 复制代码
if (条件) {
    代码块1
} else {
    代码块2
}

在执行时,如果条件为 true,执行代码块1;如果条件为 false,则执行代码块2。

例如:

caj 复制代码
if (isScorePassed) {
    println("合格")
} else {
    println("不合格")
}
println("执行完毕")

如果 isScorePassedtrue,输出结果为:

复制代码
合格
执行完毕

如果 isScorePassedfalse,输出结果为:

复制代码
不合格
执行完毕

这里,else 分支必须在 if 表达式之后的代码中运行。

双分支 if 表达式的类型

if 表达式的值被使用时,双分支的 if 表达式的类型是 if 分支和 else 分支类型的最小公共父类。

例如:

caj 复制代码
main() {
    var creditScore: UInt16 = 800
    var interestRate: Float64 = if (creditScore >= 600) {
        0.06
    } else {
        0.08
    }
    println(interestRate)
}

在这个例子中,interestRate 的值是根据 creditScore 的值决定的。如果 creditScore 大于或等于 600,则利率为 0.06;否则,利率为 0.08。最终输出利率的结果。

嵌套的 if 表达式

当希望匹配更多的条件时,可以使用嵌套的 if 表达式。嵌套 if 表达式可以包含多个分支。其语法结构如下:

caj 复制代码
if (条件1) {
    代码块1
} else if (条件2) {
    代码块2
} ...
else {
    代码块n
}

其中每个条件都必须是布尔类型的表达式。整个 if 表达式的执行流程如下:

  • 测试条件1的值,如果为 true,执行代码块1,整个 if 表达式结束;
  • 如果条件1为 false,测试条件2的值,以此类推,直到找到为 true 的条件;
  • 如果所有条件都为 false,则执行 else 分支中的代码块。

例如:

caj 复制代码
if (creditScore < 600) {
    interestRate = 0.08
} else if (creditScore < 800) {
    interestRate = 0.06
} else {
    interestRate = 0.05
}
println(interestRate)

根据 creditScore 的值,选择执行不同的分支,最终输出相应的利率。

if 表达式中的类型推断

在某些情况下,if 表达式不仅用于条件分支选择,还可以返回值。此时,if 表达式的返回值类型由 ifelse 分支的类型决定。

例如,以下代码会根据 creditScore 的值,推断出 interestRate 的类型:

caj 复制代码
main() {
    var creditScore: UInt16 = 800
    var interestRate: Float64 = if (creditScore >= 600) {
        0.06
    } else {
        0.08
    }
    println(interestRate)
}

在这个例子中,interestRate 的类型被推断为 Float64,因为 ifelse 分支中的返回值都是浮点数。这种情况适用于条件表达式需要返回一个值的场景。

嵌套 if 表达式中的执行顺序

嵌套的 if 表达式可以根据多个条件执行不同的逻辑。例如,以下代码展示了如何根据不同的 creditScore 值调整利率:

caj 复制代码
if (creditScore < 600) {
    interestRate = 0.08
} else if (creditScore < 800) {
    interestRate = 0.06
} else if (creditScore < 1000) {
    interestRate = 0.05
} else {
    interestRate = 0.04
}

在这个例子中,程序将依次测试 creditScore 是否满足每个条件,直到找到符合条件的分支。如果 creditScore 小于 600,利率设置为 0.08;如果小于 800,但大于等于 600,利率为 0.06,以此类推。最终的输出结果取决于条件的匹配情况。

条件表达式的最佳实践

对于 if 表达式的使用,编写整洁的代码并避免重复是非常重要的。例如,如果条件非常复杂,可以通过添加额外的条件块减少不必要的代码重复,确保代码逻辑清晰。

例如:

caj 复制代码
if (creditScore <= 1000) {
    if (creditScore < 600) {
        interestRate = 0.08
    } else if (creditScore < 800) {
        interestRate = 0.06
    } else if (creditScore < 900) {
        interestRate = 0.05
    } else {
        interestRate = 0.04
    }
} else {
    println("数据错误!")
}

这种写法将不同的条件组合在一起,确保只有在 creditScore 小于等于 1000 时才会进入利率设置的逻辑,如果超出此范围,将输出错误信息。这是一种防止数据错误的良好实践。

相关推荐
数据库技术讲堂2 分钟前
从 GitOps 到数据库变更:NineData 如何打通 CI/CD 的数据库治理链路
java·数据库·ci/cd
见山是山-见水是水8 分钟前
鸿蒙Panel 滑动面板完全指南:半屏/全屏切换、拖拽交互与地图应用
华为·交互·harmonyos
深海呐13 分钟前
Java 位运算符的实际应用:不止面试刷题,业务同样能用
java·位运算符·java 位运算·java 开发技巧·状态位设计·java 高阶用法·位运算符实战
2602_9599609215 分钟前
电商场景Java面试:Spring Boot、JVM、Redis、Kafka、微服务与分布式事务考点解析——谢飞机的作死面试记
java·jvm·spring boot·redis·面试题
路多辛17 分钟前
一个 Go 写的全能 AI Agent,讲讲 covo-agent
java·开发语言·golang
杨丰玮41821 分钟前
从零手写Java飞机躲障碍游戏|Swing绘图、鼠标跟随、计时器碰撞检测实战(四)
java·游戏·计算机外设
阿沐沐,24 分钟前
PowerShell 里改了 config.toml,Codex CLI 仍用旧值:先分清该改哪一层
java·服务器·数据库·人工智能·ai·ai编程
秣宇26 分钟前
银河麒麟服务器操作系统关闭 Swap 分区
linux·运维·服务器·github·kylin
RisunJan26 分钟前
Linux命令-usernetctl(已废弃 - 通过 usermode-helper 控制网络接口的包装器)
linux·运维·服务器
杨丰玮41827 分钟前
从零手写Java飞机躲障碍游戏|Swing绘图、鼠标跟随、计时器碰撞检测实战(二)
java·游戏·计算机外设