• User Attivo

    Sintassi punto esclamativo !var.property

    Salve qualcuno saprebbe spiegarmi a cosa serve usare questo tipo di sintassi nel codice ?

    Da qualche parte ho letto questo .....

    on (release)
    {
    if (!nome.length)
    {
    gotoAndStop(2);
    stato = "Inserire il nome";
    }
    else if (!cognome.length)
    {
    gotoAndStop(2);
    stato = "Inserire il cognome";
    etc................

    quei punti esclamativi cosa simboleggiano ?

    many thanks
    Gandalf :fumato:


  • Super User

    Quel punto esclamativo è il not logico.
    Dunque,
    ti faccio un esempio:

    ho una variabile di tipo Boolean:
    var boo:Boolean=false;
    per applicare una logica condizionale sul valore di boo posso fare così:
    if(boo==true)
    oppure if(boo==false)
    utilizzando il not logico posso fare:
    if(boo) cioè se boo è vero
    if(!boo) cioè se boo non è vero

    adesso andiamo al codice che hai postato:
    nome è sicuramente un Array e come sai in actionscript gli Arrays hanno una proprietà chiamata length (lo capisco d quello che nome è un Array)che restituisce il numero totale degli indici contenuti nell'Array (praticamente la sua lunghezza).
    Ora, nella programmazione il false ha valore zero e di conseguenza tutti i numeri diversi da zero sono valutati true.

    In questa riga:
    if (!nome.length) l'autore chiede a Flash se nome.length è uguale a false (cioè zero), in quel caso se nome.length è zero significa che l'array è vuoto e quindi gli fa fare delle determinate azioni( gotoAndStop(2);ecc ecc)
    e così anche per la riga: else if (!cognome.length)
    se invece la lunghezza dell'array non è zero (e quindi non è vuoto) quell'if lo giudica vero e quindi Flash non esegue il codice.


  • Super User

    Oppure nome e cognome potrebbero essere due stringhe, e l'autore controlla se la variabile appunto nome:String contiene un valore oppure è undefined.


  • User Attivo

    ... semplicemente grandiosa la spiegazione 😄 grazie mille !!!!!!

    Gandalf :fumato: