Skip to content

API UO GetArrayLength zh tw

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 的三個欄位,包含未初始化的欄位。
  • 不遞迴計算巢狀元素。String 使用 Len;List/Dictionary 使用自己的 Count。UO.GetArrayLength 是同一本機查詢的相容名稱。

內部函式:從呼叫到結果

檢查種類並讀取 Array.Length,不走訪或加總。DIM values(2) 建立索引 0..2 的三個欄位,包含未初始化的欄位。

1. GetArrayLength

檢查種類並讀取 Array.Length,不走訪或加總。DIM values(2) 建立索引 0..2 的三個欄位,包含未初始化的欄位。

Integer >= 0。空陣列與其他種類都回傳 0,因此不能單靠結果驗證型別。這是數量,不是布林值或最後索引。

專案原始碼: external/InjectionScript/src/InjectionScript/Runtime/InternalSubrutines.cs; 函式 GetArrayLength.

不遞迴計算巢狀元素。String 使用 Len;List/Dictionary 使用自己的 Count。UO.GetArrayLength 是同一本機查詢的相容名稱。

範例

加總數量

# 加總數量
#
# 計算 Array 的直接欄位數,以便有限迴圈與安全索引存取。
#
# Integer >= 0。空陣列與其他種類都回傳 0,因此不能單靠結果驗證型別。這是數量,不是布林值或最後索引。

SUB Main()
    # 迴圈走訪三筆 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

參數與執行說明:

  • 迴圈走訪三筆 0..2,回傳 150。加總由迴圈執行,並非 GetArrayLength。
  • 這是本機查詢,不會向伺服器發送要求、移動物品或修改陣列。範例使用固定資料,並非即時背包。

分開計算路徑點與座標

# 分開計算路徑點與座標
#
# 計算 Array 的直接欄位數,以便有限迴圈與安全索引存取。
#
# Integer >= 0。空陣列與其他種類都回傳 0,因此不能單靠結果驗證型別。這是數量,不是布林值或最後索引。

SUB Main()
    # 兩個點各有三欄,所以結果為 2|3,不是六。不會移動角色。
    # 這是本機查詢,不會向伺服器發送要求、移動物品或修改陣列。範例使用固定資料,並非即時背包。

    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,不是六。不會移動角色。
  • 這是本機查詢,不會向伺服器發送要求、移動物品或修改陣列。範例使用固定資料,並非即時背包。

保護第一個索引

# 保護第一個索引
#
# 計算 Array 的直接欄位數,以便有限迴圈與安全索引存取。
#
# Integer >= 0。空陣列與其他種類都回傳 0,因此不能單靠結果驗證型別。這是數量,不是布林值或最後索引。

SUB Main()
    # String 回傳 0,因此在索引存取前回傳 no route。空 Array 也受此保護,但無法區分兩者。
    # 這是本機查詢,不會向伺服器發送要求、移動物品或修改陣列。範例使用固定資料,並非即時背包。

    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。空 Array 也受此保護,但無法區分兩者。
  • 這是本機查詢,不會向伺服器發送要求、移動物品或修改陣列。範例使用固定資料,並非即時背包。

Clone this wiki locally