# 条件语句

## 功能
条件语句用于根据不同条件执行不同代码。BT 中 `if` 也是表达式：整个 `if` 的值由实际执行分支中最后一条语句返回；没有匹配分支时返回 `empty`。

## 语法
```bt
if condition {
    value_when_true
} elseif other_condition {
    value_when_other
} else {
    value_when_false
}
```

## if
`if` 后面写条件。条件为真时执行第一个代码块。

```bt
score = 72
level = if score >= 60 {
    'pass'
}
```

## else
`else` 表示前面的条件都不成立时执行的兜底分支。

```bt
result = if score >= 60 {
    'pass'
} else {
    'fail'
}
```

## elseif 和 else if
`elseif` 用于连续判断多个条件；`else if` 也可以写成嵌套条件。

```bt
grade = if score >= 90 {
    'A'
} elseif score >= 80 {
    'B'
} else {
    'C'
}
```

## 三元条件表达式
简单二选一可以用 `condition ? true_value : false_value`，适合短表达式，不适合写复杂业务块。

```bt
name = user_name ? user_name : '游客'
```

## match 表达式

## 功能
`match` 用于按顺序比较一个表达式的值，并返回第一个命中分支的结果。它适合替代连续的 `if / elseif / else` 判断。

## 语法
```bt
match expr {
    pattern => expr,
    pattern => {
        statement
        expr
    },
    pattern => expr,
    _ => expr
}
```

## 参数
- `expr`：要匹配的表达式，只会先求值一次。
- `pattern`：分支模式表达式，按从上到下的顺序与目标值进行相等比较。
- `_`：默认分支，当前面都不匹配时返回它的表达式值。

## 返回值
`match` 是表达式，命中分支后返回该分支 `=>` 右侧表达式的值；分支右侧写 `{}` 代码块时返回代码块最后一条语句的值；没有匹配且没有 `_` 默认分支时返回 `empty`。

## 代码示例
```bt
x = 1
result = match x + 1 {
    2 => 'a',
    3 => 'b',
    _ => 'c'
}

// 输出：a
print result
```

```bt
x = 1
result = match x + 1 {
    2 => {
        if x == 1 {
            'ok'
        } else {
            'no'
        }
    },
    _ => 'c'
}

// 输出：ok
print result
```

## 注意事项
- `match` 按分支书写顺序匹配，命中后不会继续检查后续分支。
- `_` 是默认分支，通常放在最后；如果放在前面，后续分支不会再被执行。
- 分支右侧可以是表达式，也可以是 `{}` 代码块；代码块的值由最后一条语句决定。
- `return` 会直接退出当前函数或脚本，不只是返回当前 match 分支；如果只是想把值交给 `match`，请把该值作为代码块最后一条语句。

## 真值规则
条件会按 BT 的真值规则判断。常见的假值包括 `false`、`null`、`empty`、`0`、空字符串、空数组和空对象；其他值通常按真处理。
