Skip to content

API Basic Do ja

Codex edited this page Sep 10, 2026 · 1 revision

Do / Loop / While / Until / Repeat

ClassicUO • Basic

Do は本体の前または後で条件を検査します。While は真の間、Until は真になるまで繰り返します。Repeat … Until は後で検査する対応済みの旧形式です。

正確な構文

Do While condition
    statements
Loop
Do Until condition
    statements
Loop
Do
    statements
Loop While condition
Do
    statements
Loop Until condition
Do
    statements
Loop
Repeat
    statements
Until condition
Continue Do
Exit Do
Break

パラメーター

  • condition / While / Until — 数値 Boolean 式 0/False または 1/True。While は真なら継続、Until は真なら終了します。検査ごとに再評価し、文字列は Boolean として解析しません。
  • position / Repeat — Do 後の条件は最初の反復を飛ばせます。Loop 後や Repeat の Until は少なくとも一度実行した後に検査します。条件位置は一つだけ指定できます。無条件の Do … Loop には明示的な終了が必要です。
  • statements / exit — 本体。Continue Do は次の条件検査へ、Exit Do は最も近い Do または Repeat の外へ進みます。Break は種類を問わず最も近いループを終了。RETURN は手続き・関数全体を終了します。

戻り値

Do、Loop、Repeat、Until、Exit Do に戻り値はありません。例では Main から Integer 1、33、83 を明示的に返します。カウンターを組み合わせた数値であり、コマンドの Boolean 結果ではありません。

動作

  • 準備時にブロックを対応付け、遷移を検査します。同じ Do の先頭と末尾両方に条件があると SC020 です。選んだ位置で評価し、While/Until の規則で繰り返します。
  • 後置条件の Continue Do はその後置条件を必ず検査します。前置条件ならヘッダーに戻ります。離れる Try の Finally は遷移前にちょうど一度実行されます。
  • Repeat はまず実行するので、空配列は入る前に処理します。暗黙の時間制限はありません。ゲーム待機には Wait と期限を使います。一時停止・停止の検査は有効です。

使用例

1. 前と後の検査

# ready=True はすでに Until を満たします最初の Do Until ready はゼロ回で before=0二つ目は after を増やした後で検査するため after=1Main  before*10+after=1 を返しますOption Explicit On
Sub Main()
    Var ready = True
    Var before = 0
    Var after = 0
    Do Until ready
        before += 1
    Loop
    Do
        after += 1
    Loop Until ready
    Return before * 10 + after
End Sub

パラメーターと実行の説明:

ready=True はすでに Until を満たします。最初の Do Until ready はゼロ回で before=0。二つ目は after を増やした後で検査するため after=1。Main は before*10+after=1 を返します。

2. 回数制限と後始末

# attempts  0 から各回増加します最初の二回の Continue Do  Finally  attempts<4 の検査を実行します三回目の Exit Do  Finally を実行しますattempts=3cleanup=3  33これはローカルの模擬試行で実際のネットワーク再試行ではありませんOption Explicit On
Sub Main()
    Var attempts = 0
    Var cleanup = 0
    Do
        Try
            attempts += 1
            If attempts < 3 Then
                Continue Do
            End If
            Exit Do
        Finally
            cleanup += 1
        End Try
    Loop While attempts < 4
    Return attempts * 10 + cleanup
End Sub

パラメーターと実行の説明:

attempts は 0 から各回増加します。最初の二回の Continue Do は Finally と attempts<4 の検査を実行します。三回目の Exit Do も Finally を実行します。attempts=3、cleanup=3 で 33。これはローカルの模擬試行で、実際のネットワーク再試行ではありません。

3. 旧形式で終了値を読む

# values=[3,5,0] は空ではありませんRepeat はセルを読みindex を増やし total に加算しますUntil はゼロまたは長さの境界で終了しゼロ発見時は OrElse が二つ目の検査を省略しますtotal=8index=3  83 を返しますOption Explicit On
Sub Main()
    Dim values[2]
    values[0] = 3
    values[1] = 5
    values[2] = 0
    Var index = 0
    Var value = 0
    Var total = 0
    Repeat
        value = values[index]
        index += 1
        total += value
    Until (value = 0) OrElse (index >= GetArrayLength(values))
    Return total * 10 + index
End Sub

パラメーターと実行の説明:

values=[3,5,0] は空ではありません。Repeat はセルを読み、index を増やし total に加算します。Until はゼロまたは長さの境界で終了し、ゼロ発見時は OrElse が二つ目の検査を省略します。total=8、index=3 で 83 を返します。


en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic

Clone this wiki locally