API Basic Dictionary es - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Dictionary

ClassicUO • Basic

Dictionary() crea una colección clave → valor. Use los métodos del objeto devuelto. Las claves numéricas y textuales son distintas; "ore" y "Ore" también difieren.

Sintaxis exacta

Dictionary() -> Object:Dictionary
Dictionary(source:Dictionary) -> Object:Dictionary
values.Add(key:String/Number, value:Any) -> Unit
values.Item(key:String/Number) -> Any
values[key] = value
values.Set(key:String/Number, value:Any) -> Unit
values.Get(key:String/Number, fallback:Any) -> Any
values.Count() -> Integer
values.ContainsKey(key:String/Number) -> Integer:1/0
values.Remove(key:String/Number) -> Integer:1/0
values.Clear() -> Unit
values.Keys() -> Array
values.Values() -> Array
entry.Key() -> String/Number
entry.Value() -> Any

Parámetros

  • source — source: omitirlo crea una colección vacía. List acepta una matriz o List; Dictionary acepta Dictionary. Se copia el contenedor exterior y se comparten referencias anidadas.
  • index / key — index / key: posiciones List numéricas enteras desde 0; Insert también admite Count(). Dictionary admite texto o números finitos. Los números 1 y 1.0 identifican una clave; el texto "1", otra.
  • value — value: valor Basic inicializado, incluida matriz o colección. Unit no se puede almacenar. Igualdad numérica, texto sensible a mayúsculas o identidad de referencias.
  • fallback — fallback: Get devuelve este valor si falta la clave, sin insertarla. Todos los argumentos, incluida la expresión fallback, se evalúan antes de llamar.

Devuelve

El constructor devuelve Object:Dictionary. Item/índice/Get devuelven valores; Count cuenta claves. ContainsKey/Remove devuelven 1=TRUE o 0=FALSE. Add/Set/Clear devuelven Unit; Keys/Values, nuevos Array. For Each entrega entradas: Key() devuelve la clave, Value() su valor.

Comportamiento

  • Add rechaza una clave existente sin sobrescribir. Set/índice crea o reemplaza; Item/índice exige una clave existente, Get ofrece un valor alternativo. Remove devuelve 0 si falta; Clear vacía todo.
  • NaN, infinito, matrices, objetos y Unit no son claves válidas. El orden no está garantizado. Cada entrada conserva su pareja incluso al avanzar a otras iteraciones.
  • Keys/Values crean copias superficiales. Recorra Keys() para eliminar/reemplazar; For Each directo sobre el diccionario produce objetos de entrada.
  • Modificar durante For Each directo, incluso con Set, produce un error capturable en el siguiente paso. Try/Finally se desenrolla correctamente. Los cambios rechazados conservan los datos.
  • Los alias y ByVal comparten la colección. Las copias duplican solo el contenedor exterior. ByRef indexado y la asignación compuesta evalúan contenedor/clave una vez; reemplazar la variable no redirige la escritura.
  • Son datos locales del script: los métodos no mueven objetos del juego ni usan la red. Una pila guardada como elemento ocupa una posición.

Ejemplos

1. Tipos de claves y valor alternativo

# "ore" cambia de 5 a 8. La clave numérica 1 guarda 2, el texto "1" guarda 3. Get("wood",7) devuelve 7 sin inserción. Main devuelve 8*100+2*10+3+7, Integer 830.
Option Explicit On
Sub Main()
    Var values = Dictionary()
    values.Add("ore", 5)
    values.Set("ore", 8)
    values[1] = 2
    values["1"] = 3
    Return values.Item("ore")*100 + values[1]*10 + values["1"] + values.Get("wood", 7)
End Sub

Explicación de los parámetros y la ejecución:

"ore" cambia de 5 a 8. La clave numérica 1 guarda 2, el texto "1" guarda 3. Get("wood",7) devuelve 7 sin inserción. Main devuelve 8100+210+3+7, Integer 830.

2. Entradas, copias y eliminación

# Los valores suman 5. Keys() permite eliminar durante el recorrido. copied conserva ore=2 y snapshot dos valores. Tras Clear, Count()=0. Main devuelve 5*100+2*10+2+0, Integer 522.
Option Explicit On
Sub Main()
    Var values = Dictionary()
    values.Add("ore", 2)
    values.Add("wood", 3)
    Var copied = Dictionary(values)
    Var snapshot = values.Values()
    Var total = 0
    For Each entry In values
        If values.ContainsKey(entry.Key()) Then
            total += entry.Value()
        End If
    Next
    For Each key In values.Keys()
        values.Remove(key)
    Next
    values.Clear()
    Return total*100 + copied["ore"]*10 + GetArrayLength(snapshot) + values.Count()
End Sub

Explicación de los parámetros y la ejecución:

Los valores suman 5. Keys() permite eliminar durante el recorrido. copied conserva ore=2 y snapshot dos valores. Tras Clear, Count()=0. Main devuelve 5100+210+2+0, Integer 522.

3. Gestionar claves duplicadas

# El primer Add guarda ore=4. El segundo con 7 genera un error; Catch pone caught=1. ore=4 se conserva. Main devuelve 4*10+1, Integer 41.
Option Explicit On
Sub Main()
    Var values = Dictionary()
    values.Add("ore", 4)
    Var caught = 0
    Try
        values.Add("ore", 7)
    Catch problem
        caught = 1
    End Try
    Return values["ore"]*10 + caught
End Sub

Explicación de los parámetros y la ejecución:

El primer Add guarda ore=4. El segundo con 7 genera un error; Catch pone caught=1. ore=4 se conserva. Main devuelve 4*10+1, Integer 41.


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

Basic