Quando converti una stringa in un booleano, quali sono i vantaggi di avere un linguaggio di programmazione per valutare una stringa vuota come vera e quali sono i vantaggi di averla valutata su false?
Nel contesto di JavaScript (suppongo che questo sia ciò che ha generato la domanda), una stringa vuota passa a false in un contesto booleano perché consente di utilizzare il modello if (str)
. Se una stringa vuota non ha valutato su false (insieme ad altri stati come null
o undefined
), dovresti fare quanto segue: if (typeof str !== "undefined" && str != null && str !== "")
.
Questo è molto più dettagliato.
Un'interpretazione alternativa è che lo stato predefinito di una primitiva restituisce un valore falso. Per i booleani, questo è falso. Per gli interi, questo è 0. Per le stringhe, sarebbe una stringa vuota. Concettualmente, non esiste alcuna garanzia di null esistenti in un determinato sistema di tipi, un valore dovrebbe avere uno stato predefinito.
La conversione di una stringa in booleana vera o falsa e altre conversioni implicite sono noleggiate in questo modo ...
I vantaggi: codice forse più succinto e intelligente; possibilmente più fluidità ed espressività quando si scrive codice velocemente; forse buono per prototipazione o scripting rapido e libero
sono facilmente ponderati da
Svantaggi: confusione, mancanza di portabilità, riduzione della manutenibilità e barriere all'offuscamento intenzionale
A causa
Nascondere la complessità dietro "trucchi" incorporati di ciascuna lingua è inizialmente intelligente e devastante. se il soggetto è complesso, come str può essere un tipo indefinito, str può essere nullo, str può essere definito, non nullo, ma vuoto, tu il programmatore deve essere esplicito su come vuoi affrontarlo. al punto di utilizzo. non sepolto in alcuni documenti sull'API JavaScript
Si noti inoltre che molti di questi pro e contro si applicano anche a un uso eccessivo dell'overloading dell'operatore, che è un caso particolare di, in sostanza.
Vantaggi: risparmi due secondi di tempo di codifica per digitare meno.
Svantaggi: il codice è meno evidente, facendo sprecare i due secondi che hai salvato dovendo leggere attentamente e valutare mentalmente la linea di codice ogni volta che la incontri.
Considera questo pseudo-codice:
print "First name: " + firstname
if middlename:
print "Middle name: " + middlename
print "Last name: " + lastname
Questo e molti casi correlati è dove "la stringa vuota è falsa-ish" è utile. Tieni presente che la valutazione diretta dei valori non booleani come booleana è di solito limitato ai linguaggi script-ish che sono stati creati con le interfacce utente in mente.
Leggi altre domande sui tag programming-languages language-design boolean language-features