BlitzMax/语言/程序流程
本节介绍影响程序执行流程的命令。
While/Wend 循环在表达式计算结果为真时继续执行。
- While 表达式
- 语句
- Wend
Repeat/Until 循环在表达式计算结果为真时停止执行。
- Repeat
- 语句
- Until 表达式
Repeat/Until 循环中的语句至少会执行一次,因为终止表达式只在循环底部进行计算。
Repeat/Forever 循环会一直执行下去。
- Repeat
- 语句
- Forever
For/To/Next 循环在数值索引变量的值超过退出值时停止执行。索引变量在每次循环迭代时都会自动更新,增加步长值。请注意,退出值是包含的 - 循环通常会在索引变量等于退出值时执行一次,然后终止。
- For 索引变量 = 起始值 To 结束值 Step 步长值
- 语句
- Next
'Step' 部分是可选的,在这种情况下,索引变量将以 1 为增量进行步进。步长值也必须是常量。
退出值只在循环开始时计算一次。这意味着将其用作退出值的复杂或“慢”代码是安全的。
你也可以通过在索引变量前使用 Local 关键字来声明一个新的局部变量作为索引变量。当循环终止时,此类局部变量在循环外部不可见。
For/Until/Next 循环的工作方式类似于 For/To/Next 循环,不同的是,当索引变量等于结束值时循环会终止 - 换句话说,结束值是不包含的。当需要计算“直到”某个值,但不包括该值时,这很有用。
- For 索引变量 = 起始值 Until 结束值 Step 步长值
- 语句
- Next
'Step' 部分是可选的,在这种情况下,索引变量将以 1 为增量进行步进。步长值也必须是常量。
退出值只在循环开始时计算一次。这意味着将其用作退出值的复杂或“慢”代码是安全的。
你也可以通过在索引变量前使用 Local 关键字来声明一个新的局部变量作为索引变量。当循环终止时,此类局部变量在循环外部不可见。
Exit 命令可用于退出 While、Repeat 或 For 循环。循环将终止,程序流程将转移到循环后的第一个命令。
Continue 命令可用于强制 While、Repeat 或 For 循环从循环的“顶部”重新开始执行,跳过循环中剩余的任何语句。
Exit 和 Continue 都可以后跟一个可选的标识符。此标识符必须与之前声明的 循环标签 匹配,这允许你退出或继续特定的循环,而不一定是“最近”的循环。
要声明循环标签,请在 While、Repeat 或 For 循环之前使用 #标识符语法。例如,当 k 和 j 都等于 5 时,此程序将退出两个循环。
Strict Local k,j #Label1 'loop label For k=1 To 4 #Label2 'another loop label (unused in this example) For j=1 To 4 Print k+","+j If k=3 And j=3 Exit Label1 Next Next
请注意,循环标签只在严格模式下可用。在非严格模式下,请使用 Goto 代替。
BlitzMax 提供了经典的 BASIC“单行”风格的 If/Then 语句...
- If 表达式 Then 语句 Else 语句
...以及更现代的块等价物...
- If 表达式
- 语句
- Else If 表达式
- 语句
- Else
- 语句
- EndIf
在这两种形式中,Then 关键字都是可选的。
注释:请注意,单行 If/ElseIf/Else 语句也受支持,然后可以使用 .. 行延续符号在多行上拆分。
Select/Case 块允许你简化复杂的条件测试。选择表达式与每个 case 表达式进行比较,如果发现相等,则执行相应 case 块中的程序代码。如果没有找到匹配的 case,则执行可选的 default 块中的程序代码。
- Select 表达式
- Case 表达式
- 语句
- Default
- 语句
- End Select
Default 部分是可选的。
选定值只计算一次,在检查每个 case 之前。
每个 case 可以通过提供以逗号分隔的表达式序列来使用多个表达式。