仓颉运算符与流程控制
本章介绍仓颉中用于数据计算和逻辑控制的运算符与流程控制语句。
算术运算符
let a: Int64 = 10
let b: Int64 = 3
println(a + b) // 13
println(a - b) // 7
println(a * b) // 30
println(a / b) // 3
println(a % b) // 1
赋值运算符
var x: Int64 = 10
x += 5 // x = 15
x -= 3 // x = 12
x *= 2 // x = 24
x /= 4 // x = 6
比较运算符
println(5 == 10) // false
println(5 != 10) // true
println(5 > 10) // false
println(5 < 10) // true
println(5 >= 5) // true
println(5 <= 10) // true
逻辑运算符
let isLogin = true
let isAdmin = false
println(isLogin && isAdmin) // false
println(isLogin || isAdmin) // true
println(!isLogin) // false
条件表达式
if 表达式
仓颉的 if 是表达式,可以返回值。条件必须是 Bool 类型,不能使用整数代替。
let score: Int64 = 85
if (score >= 90) {
println("优秀")
} else if (score >= 80) {
println("良好")
} else {
println("继续努力")
}作为表达式使用时,if 的值是所执行分支的值:
let level = if (score >= 60) { "及格" } else { "不及格" }
仓颉中 if 条件只能是 Bool 类型,不能像 C/JS 那样用整数判断。
let number = 1
// if (number) { } // 编译错误!
if (number != 0) { } // 正确
三元运算符
仓颉不支持 ?: 三元运算符,但可以用 if 表达式替代:
let result = if (age >= 18) { "成年人" } else { "未成年人" }
循环表达式
for-in 循环
for-in 用于遍历序列,是最常用的循环方式:
for (i in 1..=100) {
println(i)
}
遍历数组:
let fruits = ["苹果", "香蕉", "橙子"]
for (fruit in fruits) {
println(fruit)
}
遍历元组数组并解构:
let pairs = [(1, "A"), (2, "B"), (3, "C")]
for ((id, name) in pairs) {
println("${id}: ${name}")
}
while 循环
var count = 0
while (count < 3) {
println(count)
count++
}
do-while 循环
var num = 0
do {
println(num)
num++
} while (num < 3)
break 与 continue
for (i in 0..10) {
if (i == 3) {
continue
}
if (i == 6) {
break
}
println(i)
}match 表达式
match 是仓颉中强大的模式匹配表达式,类似于其他语言的 switch 但功能更强:
let level = "B"
match (level) {
case "A" => println("优秀")
case "B" => println("良好")
case "C" => println("一般")
case _ => println("其他")
}
match 也可以作为表达式返回值:
let grade = match (score / 10) {
case 10 => "A"
case 9 => "A"
case 8 => "B"
case 7 => "C"
case _ => "D"
}
匹配枚举:
enum Color {
| Red
| Green
| Blue
| RGB(Int64, Int64, Int64)
}
match (color) {
case Red => println("红色")
case Green => println("绿色")
case Blue => println("蓝色")
case RGB(r, g, b) => println("RGB(${r}, ${g}, ${b})")
}本章小结
if是表达式,条件必须是Bool类型。for-in是最常用的循环,支持区间和序列遍历。match是强大的模式匹配表达式,支持常量模式、绑定模式和枚举匹配。- 没有
?:三元运算符,用if表达式替代。