-
Notifications
You must be signed in to change notification settings - Fork 0
API Basic List ja
Codex edited this page Sep 10, 2026
·
1 revision
ClassicUO • Basic
List() は順序を持つ可変長コレクションを作ります。結果を変数に保存してください。items.Add はオブジェクトのメソッドであり、グローバルな List.Add 命令はありません。
List() -> Object:List
List(source:Array/List) -> Object:List
items.Add(value:Any) -> Unit
items.Insert(index:Number, value:Any) -> Unit
items.Item(index:Number) -> Any
items[index] = value
items.Set(index:Number, value:Any) -> Unit
items.Count() -> Integer
items.Contains(value:Any) -> Integer:1/0
items.IndexOf(value:Any) -> Integer:index/-1
items.Remove(value:Any) -> Integer:1/0
items.RemoveAt(index:Number) -> Unit
items.Clear() -> Unit
items.ToArray() -> Array
-
source— source:省略すると空になります。List は配列または List、Dictionary は Dictionary を受け取ります。外側の容器をコピーし、入れ子の参照は共有します。 -
index / key— index / key:List の位置は 0 からの整数値です。Insert は Count() も許可します。Dictionary のキーは文字列または有限数です。数値 1 と 1.0 は同じキー、文字列 "1" は別です。 -
value— value:初期化済み Basic 値です。配列やコレクションも含みます。Unit は保存できません。数値、大小文字を区別する文字列、配列/オブジェクトの参照同一性で比較します。 -
fallback— fallback:キーがなければ Get はこの代替値を返し、挿入しません。fallback の式を含むすべての引数はメソッド呼び出し前に評価します。
生成は Object:List を返します。Item/添字は格納値、Count は要素数、IndexOf は 0 からの位置または -1 を返します。Contains/Remove は 1=TRUE または 0=FALSE、Add/Insert/Set/RemoveAt/Clear は Unit、ToArray は新しい Array を返します。
- Add は末尾に追加、Insert は位置の前に挿入、Set/添字代入は既存要素を置換します。Item/添字は読み取りです。Remove は最初の等しい値、RemoveAt は指定位置、Clear は全要素を削除します。
- Contains は存在確認、IndexOf は最初の一致位置を検索します。負数、小数、文字列、範囲外の添字は捕捉可能なエラーとなり、リストは変わりません。
- For Each は順序を保ちます。ToArray は浅いスナップショットです。元のリストを変更しながら処理する場合はこちらを反復してください。
- 直接 For Each 中に Set を含む変更を行うと、次のステップで捕捉可能なエラーになります。Try/Finally は通常どおり終了処理します。失敗した変更は元のデータを保ちます。
- 別名と ByVal 引数はコレクションを共有します。コピーやスナップショットは外側だけを複製します。添字付き ByRef と複合代入は容器/キーを一度評価し、変数を置換しても書き戻し先は変わりません。
- ローカルのスクリプトデータです。メソッドはゲーム内アイテムを動かさず、ネットワークも使いません。一つの要素として格納したスタックは一つの位置を占めます。
# Add で [3,7]、Insert(1,5) で [3,5,7]、Set(0,2) で [2,5,7] になります。For Each が三つの値を合計します。Main は Integer 14 を返します。
Option Explicit On
Sub Main()
Var items = List()
items.Add(3)
items.Add(7)
items.Insert(1, 5)
items.Set(0, 2)
Var total = 0
For Each item In items
total += item
Next
Return total
End Subパラメーターと実行の説明:
Add で [3,7]、Insert(1,5) で [3,5,7]、Set(0,2) で [2,5,7] になります。For Each が三つの値を合計します。Main は Integer 14 を返します。
# seed=[4,6]。copied と snapshot は値を保持します。元は [9,6] になり、Remove(6) は TRUE=1、RemoveAt(0) で空、Clear でも空です。Main は 4*100+6*10+1+0、Integer 461 を返します。
Option Explicit On
Sub Main()
Dim seed[1]
seed[0] = 4
seed[1] = 6
Var items = List(seed)
Var copied = List(items)
Var snapshot = items.ToArray()
items[0] = 9
Var removed = items.Remove(6)
items.RemoveAt(0)
items.Clear()
Return snapshot[0]*100 + copied[1]*10 + removed + items.Count()
End Subパラメーターと実行の説明:
seed=[4,6]。copied と snapshot は値を保持します。元は [9,6] になり、Remove(6) は TRUE=1、RemoveAt(0) で空、Clear でも空です。Main は 4100+610+1+0、Integer 461 を返します。
# NextIndex は一度だけ実行され、calls=1、添字は 0。Bump が 5 を 6 にします。Contains(6)=TRUE、IndexOf(6)=0、Item(0) は 6。Main は Integer 601 を返します。
Option Explicit On
Function NextIndex(ByRef calls)
calls += 1
Return 0
End Function
Sub Bump(ByRef value)
value += 1
End Sub
Sub Main()
Var items = List()
items.Add(5)
Var calls = 0
Bump(items[NextIndex(calls)])
If items.Contains(6) AndAlso items.IndexOf(6) = 0 Then
Return items.Item(0)*100 + calls
End If
Return -1
End Subパラメーターと実行の説明:
NextIndex は一度だけ実行され、calls=1、添字は 0。Bump が 5 を 6 にします。Contains(6)=TRUE、IndexOf(6)=0、Item(0) は 6。Main は Integer 601 を返します。
ClassicUO - Bad Newbie & Basic IDE Edition