Java 8 Opzionale in JavaScript

1

Mi piace l'idea di Facoltativo in Java che possiamo usare per dire che l'oggetto può o non può essere disponibile.

Ora sto imparando JavaScript e quando provo a trovare un equivalente, ho trovato solo attraverso optional-js . Nessun altro quadro importante sembra implementarlo.

Questo mi ha fatto meravigliare, un tale uso non è necessario in JavaScript? C'è un'alternativa in JavaScript per questo? Non è il JavaScript way di fare le cose?

    
posta Can't Tell 09.04.2016 - 04:09
fonte

1 risposta

3

Da quando ha impiegato Java un decennio per passare dall'avere tutto il necessario per supportarlo in modo pulito (ad esempio da Java 5) per aggiungerlo; C # ancora non l'ha aggiunto alla libreria standard sebbene sia in grado di circa il tempo necessario; e l'idea è stata di uso comune nei linguaggi funzionali (tipizzati staticamente) poiché, almeno, gli anni '70, direi che JavaScript è più rappresentativo della tendenza.

In effetti, le lingue digitate dinamicamente tendono a essere peggio di questo. Il concetto è sicuramente utile in linguaggi tipizzati dinamicamente ed è facile da implementare, ma pochi lo hanno nelle librerie "standard". Uno dei motivi è che alcuni dei vantaggi sono persi in un linguaggio digitato in modo dinamico. In un linguaggio tipizzato staticamente, l'uso di un tipo Optional mi costringerà a gestire il caso "niente", non in un linguaggio tipizzato dinamicamente.

Un altro aspetto che è un doppio smacco è la comune pertinenza della nozione di "verità" valori. Da un lato, rende significativamente più semplice interpretare in modo non corretto il comportamento quando si utilizza qualcosa come Optional . D'altra parte, certi modelli che Optional può gestire bene possono essere ottenuti usando la verità, ad es. l'onnipresente

var x = passedInValue || defaultValue;

Tuttavia, non è difficile immaginare come ciò potrebbe andare storto. "Che cosa succede se passedInValue è 0 o false ? O se voglio che sia null ? Come comunico la differenza tra non fornire un valore e fornire esplicitamente un valore nullo?" Problemi simili si verificano quando si utilizza una funzione: "Come faccio a distinguere tra un errore di ricerca e una ricerca con esito positivo di null?" Probabilmente, in JavaScript, undefined potrebbe (apparentemente) servire alcuni di questi ruoli, ma è una "soluzione" che è peggio della malattia e anche non una soluzione.

La situazione è molto simile a null nella maggior parte delle lingue o NULL in SQL. La verità aumenta i problemi di null . A questo punto, non sorprende che la maggior parte delle lingue funzionali tipizzate staticamente manchi di un equivalente a null . Per qualche ragione, dopo decenni di esistenza, non sono a conoscenza di alcun linguaggio funzionale tipizzato staticamente che abbia deciso di aggiungere qualcosa come null dopo la creazione della lingua.

Quindi, in effetti, la risposta è che non è il "modo JavaScript" di fare le cose, ma JavaScript non è mai stato davvero un leader nel fare le cose in modo corretto. Sfortunatamente, per questo particolare esempio, JavaScript è lontano da solo. In qualche modo dubito che Optional non sarebbe stato utile in Java un decennio fa.

    
risposta data 09.04.2016 - 05:01
fonte

Leggi altre domande sui tag