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

Named arguments / :=

ClassicUO • Basic

Gli argomenti nominati associano valori ai nomi dichiarati, indipendentemente dall’ordine. Sono supportati per procedure e funzioni dello script, moduli, funzioni Basic/UO registrate e metodi nativi.

Sintassi esatta

FunctionName(parameterName:=expression, otherName:=expression)
FunctionName(positionalExpression, optionalName:=expression)
FunctionName([reservedName]:=expression)

Parametri

  • parameterName / [reservedName] — Scrivere name:=valore usando il nome della dichiarazione o firma, senza distinzione fra maiuscole e minuscole. Racchiudere i nomi riservati: [to]:=100. Le parentesi indicano il nome, non un indice. Nomi sconosciuti o duplicati causano errore.
  • expression — Ogni espressione fornita viene valutata una volta da sinistra a destra, poi assegnata al relativo parametro. Tipi, limiti e ByVal/ByRef restano quelli della funzione. La sintassi non trasforma un valore in variabile modificabile.
  • positionalExpression / optionalName — Prima gli argomenti posizionali, poi soltanto quelli nominati. Non omettere parametri obbligatori. Gli Optional omessi nello script usano i valori dichiarati, valutati in ordine di dichiarazione dopo le espressioni fornite. I metodi nativi usano solo nomi e numero registrati, senza nuovi valori predefiniti.

Restituisce

:= non restituisce un valore autonomo. La funzione/API mantiene il proprio risultato; Sub non ha risultato implicito. Gli esempi restituiscono Integer 129 e String "21:12", "20:10:2", non Boolean.

Comportamento

  • La preparazione segnala SC027 con posizione sorgente per nomi errati, duplicati, obbligatori mancanti o ambiguità. Gli oggetti dinamici vengono verificati durante l’esecuzione prima di valutare gli argomenti. Una firma nativa mancante non viene sostituita da un richiamo senza argomenti.
  • Le mappe immutabili dei punti di chiamata statici vengono memorizzate. Valutazione in ordine sorgente, assegnazione e scrittura ByRef secondo i parametri. Valori predefiniti e informazioni del debugger seguono la firma scelta. Il ricevitore dinamico appartiene alla chiamata corrente, non alla precedente.
  • ParamArray non si passa per nome. Con argomenti nominati può restare vuoto; per passarne i valori serve una chiamata solo posizionale. Non sono supportati posti vuoti fra virgole. Vale la regola posizionali prima, non la combinazione libera dei VB.NET recenti. Nessun thread o ritardo di gioco aggiuntivo.

Esempi

1. Omettere l’Optional centrale

# Encode dichiara x, y=2, z=3. z:=9 e x:=1 forniscono z e x; y mantiene 2. Il risultato è 1*100+2*10+9=129. Equivalenti: Encode(1,2,9) e Encode(1,z:=9).
Option Explicit On
Function Encode(ByVal x, Optional ByVal y=2, Optional ByVal z=3) As Integer
    Return x*100 + y*10 + z
End Function

Sub Main()
    Dim encoded = Encode(z:=9, x:=1)
    Return encoded
End Sub

Spiegazione dei parametri e dell’esecuzione:

Encode dichiara x, y=2, z=3. z:=9 e x:=1 forniscono z e x; y mantiene 2. Il risultato è 1100+210+9=129. Equivalenti: Encode(1,2,9) e Encode(1,z:=9).

2. Scrivere nelle variabili ByRef corrette

# Change dichiara ByRef left e right. right:=a collega a=1 a right, left:=b collega b=2 a left. Sommando 10 a left e 20 a right si riscrivono b=12 e a=21. Main restituisce "21:12". A sinistra di := c’è il parametro, a destra la variabile chiamante.
Option Explicit On
Sub Change(ByRef left, ByRef right)
    left += 10
    right += 20
End Sub

Sub Main()
    Dim a = 1
    Dim b = 2
    Change(right:=a, left:=b)
    Return CStr(a) & ":" & CStr(b)
End Sub

Spiegazione dei parametri e dell’esecuzione:

Change dichiara ByRef left e right. right:=a collega a=1 a right, left:=b collega b=2 a left. Sommando 10 a left e 20 a right si riscrivono b=12 e a=21. Main restituisce "21:12". A sinistra di := c’è il parametro, a destra la variabile chiamante.

3. Usare una lista nativa

# List() crea la lista. Add(value:=10) aggiunge 10 senza risultato. Insert(value:=20,index:=0) inserisce 20 all’indice 0 e sposta 10 all’indice 1. Item(index:=...) restituisce l’elemento, Count() restituisce 2. Main restituisce "20:10:2". Per UO.Name(...) valgono i nomi registrati e il risultato specifico del comando.
Option Explicit On
Sub Main()
    Dim items = List()
    items.Add(value:=10)
    items.Insert(value:=20, index:=0)
    Dim first = items.Item(index:=0)
    Dim second = items.Item(index:=1)
    Return CStr(first) & ":" & CStr(second) & ":" & CStr(items.Count())
End Sub

Spiegazione dei parametri e dell’esecuzione:

List() crea la lista. Add(value:=10) aggiunge 10 senza risultato. Insert(value:=20,index:=0) inserisce 20 all’indice 0 e sposta 10 all’indice 1. Item(index:=...) restituisce l’elemento, Count() restituisce 2. Main restituisce "20:10:2". Per UO.Name(...) valgono i nomi registrati e il risultato specifico del comando.


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

Basic