# 流程控制

URL: https://caijiao.org/lua/control
Source: docs/lua/control.md
Description: 学习 Lua 中的条件判断、循环语句与控制关键字的用法，包括 if、while、for 与 repeat until。

Lua 的流程控制结构简单直观，与 C 或 Python 类似。  

常见控制语句包括：`if`、`while`、`for`、`repeat until`，以及关键字 `break`。

## 🧩 条件判断：if / elseif / else

```lua
local score = 85

if score >= 90 then
  print("优秀")
elseif score >= 60 then
  print("及格")
else
  print("不及格")
end
````

> 注意：Lua 的条件表达式 **不需要括号**，并且以 `end` 结束。

## 🔁 while 循环

```lua
local i = 1
while i <= 5 do
  print("第 " .. i .. " 次循环")
  i = i + 1
end
```

## 🔂 repeat ... until 循环

`repeat ... until` 类似于 “do...while”，至少执行一次循环体。

```lua
local i = 1
repeat
  print(i)
  i = i + 1
until i > 5
```

## 🔄 数值 for 循环

```lua
for i = 1, 5 do
  print("第 " .. i .. " 次")
end
```

还可以指定步长：

```lua
for i = 10, 1, -2 do
  print(i)
end
```

## 🧭 泛型 for 循环（遍历表）

用于遍历表（table）或迭代器：

```lua
local t = { "Lua", "Python", "Go" }

for i, v in ipairs(t) do
  print(i, v)
end
```

或者使用 `pairs` 遍历键值表：

```lua
local user = { name = "Alice", age = 20 }

for key, value in pairs(user) do
  print(key, value)
end
```

## 🛑 break 跳出循环

`break` 用于提前退出当前循环。

```lua
for i = 1, 10 do
  if i == 5 then
    break
  end
  print(i)
end
```

## 🧠 小结

* 条件判断使用 `if ... elseif ... else ... end`
* 循环结构包括 `while`、`repeat until`、`for` 三种
* `break` 可终止当前循环
* 遍历表使用 `pairs()` 或 `ipairs()`
