Skip to content

API UO GetArrayLength ja

Codex edited this page Oct 4, 2026 · 1 revision

UO.GetArrayLength

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

API · Basic

ClassicUO • Runtime API

添字の安全な参照や有限ループのために Array の直接の要素数を数えます。

正確な構文

UO.GetArrayLength(arg:Any) -> Any

パラメーター

  • arg — 任意の BASIC 値。Array は外側の Length、String・数値・Object・Unit は 0。

戻り値

Integer >= 0。空配列も別の種類も 0 なので型検証にはなりません。件数であり、真偽値や最後の添字ではありません。

動作

  • ローカル処理です。サーバーへの要求、アイテムの移動、配列の変更は行いません。例は現在の所持品ではなく固定データを使います。
  • 種類を調べ Array.Length を読みます。走査や合計なし。DIM values(2) は未初期化分も含め添字 0..2 の3要素を作ります。
  • 入れ子は再帰的に数えません。String は Len、List/Dictionary は自身の Count を使います。UO.GetArrayLength は同じローカル処理の互換名です。

内部関数:呼び出しから結果まで

種類を調べ Array.Length を読みます。走査や合計なし。DIM values(2) は未初期化分も含め添字 0..2 の3要素を作ります。

1. GetArrayLength

種類を調べ Array.Length を読みます。走査や合計なし。DIM values(2) は未初期化分も含め添字 0..2 の3要素を作ります。

Integer >= 0。空配列も別の種類も 0 なので型検証にはなりません。件数であり、真偽値や最後の添字ではありません。

プロジェクトのソース: external/InjectionScript/src/InjectionScript/Runtime/InternalSubrutines.cs; 関数 GetArrayLength.

入れ子は再帰的に数えません。String は Len、List/Dictionary は自身の Count を使います。UO.GetArrayLength は同じローカル処理の互換名です。

使用例

数量を合計する

# 数量を合計する
#
# 添字の安全な参照や有限ループのために Array の直接の要素数を数えます。
#
# Integer >= 0。空配列も別の種類も 0 なので型検証にはなりません。件数であり、真偽値や最後の添字ではありません。

SUB Main()
    # ループが3要素 0..2 を走査して 150 を返します。合計するのはループであり GetArrayLength ではありません。
    # ローカル処理です。サーバーへの要求、アイテムの移動、配列の変更は行いません。例は現在の所持品ではなく固定データを使います。

    Dim amounts(2)
    amounts[0] = 50
    amounts[1] = 75
    amounts[2] = 25
    Dim total = 0
    For index = 0 To UO.GetArrayLength(amounts) - 1
        total += amounts[index]
    Next
    Return total
END SUB

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

  • ループが3要素 0..2 を走査して 150 を返します。合計するのはループであり GetArrayLength ではありません。
  • ローカル処理です。サーバーへの要求、アイテムの移動、配列の変更は行いません。例は現在の所持品ではなく固定データを使います。

点と座標を別々に数える

# 点と座標を別々に数える
#
# 添字の安全な参照や有限ループのために Array の直接の要素数を数えます。
#
# Integer >= 0。空配列も別の種類も 0 なので型検証にはなりません。件数であり、真偽値や最後の添字ではありません。

SUB Main()
    # 点が2つ、各点に3要素あるので 2|3 を返します。6ではなく、移動もしません。
    # ローカル処理です。サーバーへの要求、アイテムの移動、配列の変更は行いません。例は現在の所持品ではなく固定データを使います。

    Dim first(2)
    first[0] = 100
    first[1] = 200
    first[2] = 0
    Dim second(2)
    second[0] = 101
    second[1] = 200
    second[2] = 0
    Dim route(1)
    route[0] = first
    route[1] = second
    Return CStr(UO.GetArrayLength(route)) & "|" & CStr(UO.GetArrayLength(route[0]))
END SUB

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

  • 点が2つ、各点に3要素あるので 2|3 を返します。6ではなく、移動もしません。
  • ローカル処理です。サーバーへの要求、アイテムの移動、配列の変更は行いません。例は現在の所持品ではなく固定データを使います。

最初の添字を保護する

# 最初の添字を保護する
#
# 添字の安全な参照や有限ループのために Array の直接の要素数を数えます。
#
# Integer >= 0。空配列も別の種類も 0 なので型検証にはなりません。件数であり、真偽値や最後の添字ではありません。

SUB Main()
    # String は 0 なので添字に触る前に no route を返します。空配列も同じ判定になり両者は区別できません。
    # ローカル処理です。サーバーへの要求、アイテムの移動、配列の変更は行いません。例は現在の所持品ではなく固定データを使います。

    Dim route = "not an array"
    If UO.GetArrayLength(route) = 0 Then
        Return "no route"
    End If
    Return route[0]
END SUB

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

  • String は 0 なので添字に触る前に no route を返します。空配列も同じ判定になり両者は区別できません。
  • ローカル処理です。サーバーへの要求、アイテムの移動、配列の変更は行いません。例は現在の所持品ではなく固定データを使います。

Clone this wiki locally