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 可以透過提供以逗號分隔的表示式序列來使用多個表示式。