Variabili

Scriggo consente di dichiarare nuove variabili nel template in aggiunta alle variabili globali.

Dichiarazione

Una variabile per poter essere usata deve essere prima dichiarata con l'istruzione var:

{% var benvenuto = "ciao" %}

Le variabili dichiarate nel codice del template si possono usare allo stesso modo di quelle globali:

{% var importo = 50 %}

La spedizione è gratuita per una spesa di almeno {{ importo }} euro
La spedizione è gratuita per una spesa di almeno 50 euro

Tipi delle variabili

Ogni variabile ha un tipo e il suo tipo è il tipo del valore che gli viene assegnato al momento della sua dichiarazione. Il tipo può essere anche indicato esplicitamente nella dichiarazione, ad esempio le seguenti dichiarazioni sono equivalenti e tutte e tre le variabili avranno valore 0:

{% var a = 0 %}
{% var b int %}
{% var c int = 0 %}

Il tipo di una variabile non può cambiare; ne determina i valori che le si possono assegnare, quali operatori si possono usare ed eventualmente quali metodi si possono chiamare sulla variabile.

Esempi

{% var a string %}    a ha tipo string e valore ""
{% var b int %}       b ha tipo int e valore 0
{% var c bool %}      c ha tipo bool e valore false
{% var d Decimal %}   d ha tipo Decimal e valore Decimal{}, ossia decimale 0.0
{% var e []string %}  e ha tipo []string e valore nil

Le seguenti sono come le precedenti dichiarazioni ma con un valore iniziale:

{% var a = "hello" %}                    a ha tipo string e valore "hello"
{% var b = 5 %}                          b ha tipo int e valore 5
{% var c = true %}                       c ha tipo bool e valore true
{% var d = decimal("4.7") %}             d ha tipo Decimal e valore decimale 4.7
{% var e = []string{"ciao", "hello"} %}  e ha tipo []string e valore []string{"ciao", "hello"}

Assegnamento

Una volta che una variabile è stata dichiarata, se ne può in qualsiasi momento modificare il valore con un assegnamento. Il tipo invece non può cambiare, pertanto si possono assegnare esclusivamente valori dello stesso tipo della variabile.

{% benvenuto = "hello" %}

Sono disponibili diverse altre istruzioni di assegnamento che combinano l'assegnamento con un operatore:

Scrivere è come scrivere
a++ a = a + 1
a-- a = a - 1
a += b a = a + b
a -= b a = a - b
a *= b a = a * b
a /= b a = a / b
a %= b a = a % b

Visibilità

Le variabili globali sono visibili in qualsiasi file e in qualsiasi parte del codice. Invece le variabili dichiarate nel codice del template sono visibili solo a partire dal punto in cui sono dichiarate e sempre limitatamente allo stesso file, ma in alcuni casi la loro visibilità è ancora più limitata.

Le variabili dichiarate all'interno di una istruzione if, else, else if, switch, case, default, for e macro sono ulteriormente limitate all'istruzione entro cui sono dichiarate.

Esempi

Nel seguente esempio la variabile n è visibile sia fuori che dentro all'istruzione if mentre la variabile s è visibile solo al suo interno.

{% var n = 3 %}
{% if n > 2 %}
  {% var s = "hello" %}
  {{ n }}{{ s }}
{% end if %}
{{ n }}

In quest'altro esempio la variabile n non sarà visibile nel file "column.html".

{% var n = 3 %}
{% show "column.html" %}

Per renderne disponibile il valore in un altro file si può usare una macro. In questo esempio il valore della variabile n viene passato come argomento alla macro Column la quale può essere anche dichiarata in un altro file:

{% var n = 3 %}
{% show Column(n) %}

Dichiarazioni e assegnamenti multipli

Le istruzioni di dichiarazione var ed assegnamento = consentono anche di dichiarare e assegnare più variabili allo stesso tempo. Scrivere:

{% var n, s = 5, "ciao" %}

{% n, s = 2, "hello" %}

è equivalente a:

{% var n = 5 %}
{% var s = "ciao" %}

{% n = 2 %}
{% s = "hello" %}

L'assegnamento multiplo è utile ad esempio per scambiare i valori di due variabili:

{% a, b = b, a %}

e la dichiarazione e l'assegnamento multipli sono utili per assegnare i valori di ritorno di una funzione che ritorna due o più valori:

{% var d, err = parseDecimal("12.99") %}
Quanto ti è stata utile questa pagina?

Grazie per averci aiutato a migliorare questa pagina