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

Dictionary

ClassicUO • Basic

Dictionary() crea una raccolta chiave → valore. Usare i metodi dell’oggetto restituito. Chiavi numeriche e testuali sono distinte; anche "ore" e "Ore" differiscono.

Sintassi esatta

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

Parametri

  • source — source: omesso crea una raccolta vuota. List accetta array o List; Dictionary accetta Dictionary. Si copia il contenitore esterno, condividendo i riferimenti annidati.
  • index / key — index / key: posizioni List numeriche intere da 0; Insert accetta anche Count(). Le chiavi Dictionary sono testo o numeri finiti. I numeri 1 e 1.0 identificano una chiave; il testo "1" un’altra.
  • value — value: valore Basic inizializzato, anche array o raccolta. Unit non può essere memorizzato. Uguaglianza numerica, testo sensibile alle maiuscole o identità dei riferimenti.
  • fallback — fallback: Get restituisce questo valore per una chiave assente, senza inserirla. Tutti gli argomenti, inclusa l’espressione fallback, si valutano prima della chiamata.

Restituisce

Il costruttore restituisce Object:Dictionary. Item/indice/Get restituiscono valori; Count conta le chiavi. ContainsKey/Remove restituiscono 1=TRUE o 0=FALSE. Add/Set/Clear restituiscono Unit; Keys/Values, nuovi Array. For Each produce voci: Key() restituisce la chiave e Value() il valore.

Comportamento

  • Add rifiuta una chiave esistente senza sovrascrivere. Set/indice crea o sostituisce; Item/indice richiede la chiave, Get offre un valore di riserva. Remove restituisce 0 se assente, Clear svuota tutto.
  • NaN, infinito, array, oggetti e Unit non sono chiavi valide. L’ordine non è garantito. Ogni voce conserva la propria coppia anche passando all’iterazione successiva.
  • Keys/Values creano copie superficiali. Scorrere Keys() per eliminare/sostituire; For Each sul dizionario produce oggetti voce.
  • Modificare durante For Each diretto, anche con Set, genera un errore intercettabile al passo successivo. Try/Finally si conclude correttamente. Le modifiche rifiutate conservano i dati.
  • Alias e ByVal condividono la raccolta. Copie e istantanee duplicano solo il contenitore esterno. ByRef indicizzato e assegnazione composta valutano contenitore/chiave una volta; sostituire la variabile non reindirizza la scrittura.
  • Sono dati locali dello script: i metodi non spostano oggetti di gioco né usano la rete. Una pila memorizzata come elemento occupa una posizione.

Esempi

1. Tipi delle chiavi e riserva

# "ore" passa da 5 a 8. La chiave numerica 1 contiene 2, il testo "1" contiene 3. Get("wood",7) restituisce 7 senza inserimento. Main restituisce 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

Spiegazione dei parametri e dell’esecuzione:

"ore" passa da 5 a 8. La chiave numerica 1 contiene 2, il testo "1" contiene 3. Get("wood",7) restituisce 7 senza inserimento. Main restituisce 8100+210+3+7, Integer 830.

2. Voci, copie ed eliminazione

# I valori sommano a 5. Keys() permette di eliminare durante lo scorrimento. copied conserva ore=2, snapshot due valori. Dopo Clear Count()=0. Main restituisce 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

Spiegazione dei parametri e dell’esecuzione:

I valori sommano a 5. Keys() permette di eliminare durante lo scorrimento. copied conserva ore=2, snapshot due valori. Dopo Clear Count()=0. Main restituisce 5100+210+2+0, Integer 522.

3. Gestire una chiave duplicata

# Il primo Add memorizza ore=4. Il secondo con 7 genera un errore; Catch imposta caught=1. ore=4 rimane. Main restituisce 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

Spiegazione dei parametri e dell’esecuzione:

Il primo Add memorizza ore=4. Il secondo con 7 genera un errore; Catch imposta caught=1. ore=4 rimane. Main restituisce 4*10+1, Integer 41.


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

Basic