Articles of language design

Sintassi per riferimenti universali

Questo è un riferimento di rvalue: void foo(int&& a); Non si lega ai lvalue: int i = 42; foo(i); // error Questo è un riferimento universale: template void bar(T&& b); Si lega ai rvalues ​​e si lega anche ai lvalue: bar(i); // okay Questo è un riferimento di rvalue: template struct X { void baz(T&& […]

Utilizzo di chiavi variabili per accedere ai valori negli oggetti JavaScript

Il codice: function updateDashboardData() { $.getJSON(“includes/system/ajaxDataInterface.php”, {recordcount:1}, function(data) { $(‘.stationContainer’).each(function(data) { var bsID = $(this).attr(“id”); var bsStatus = $(this).children(‘.stationStatus’); alert(data[bsID][0].time); bsStatus.find(‘.bs_maxHandsets’).text(data[bsID][0].maxHandsets); bsStatus.find(‘.bs_time’).text(data[bsID][0].time); }); }); } I dati dell’object: { “A5A50000”: [{ “bsid”: “A5A50000”, “chanCount”: 17, “time”: “2009-05-27 16:36:45”, “avgInterference”: 1.711765, “maxInterference”: 4.97, “avgHandsets”: 205.1176, “maxHandsets”: 315, “avgCalls”: 6.4118, “maxCalls”: 13, “avgCBA”: 3868.98059, “maxCBA”: 7463, “sumSuccessCBA”: […]

Perché le variabili locali richiedono l’inizializzazione, ma i campi no?

Se creo un bool all’interno della mia class, solo qualcosa come il bool check , è impostato su false. Quando creo lo stesso bool all’interno del mio metodo, il bool check (invece che all’interno della class), ottengo un errore “uso del controllo della variabile locale non assegnato”. Perché?

Perché un array non è assegnabile a Iterable?

con Java5 possiamo scrivere: Foo[] foos = … for (Foo foo : foos) o semplicemente usando un Iterable nel ciclo for. Questo è molto utile. Tuttavia non è ansible scrivere un metodo generico per iterabile come questo: public void bar(Iterable foos) { .. } e chiamandolo con un array poiché non è un Iterable: Foo[] […]

Perché Java non consente sottoclassi generiche di Throwable?

Secondo Java Language Sepecification , 3a edizione: È un errore in fase di compilazione se una class generica è una sottoclass diretta o indiretta di Throwable . Vorrei capire perché questa decisione è stata presa. Cosa c’è di sbagliato con le eccezioni generiche? (Per quanto ne so, i generici sono semplicemente zucchero sintattico in fase […]

Perché la variabile Iteration in una istruzione foreach C # è di sola lettura?

A quanto ho capito, la variabile di iterazione foreach di C # è immutabile. Il che significa che non posso modificare l’iteratore in questo modo: foreach (Position Location in Map) { //We want to fudge the position to hide the exact coordinates Location = Location + Random(); //Compiler Error Plot(Location); } Non posso modificare direttamente […]

Perché non sono supportati i metodi di estensione di class statica C #?

So da questa domanda che i metodi di estensione possono operare solo su istanze di class, non sulla class statica stessa. Ciò significa che non posso estendere classi statiche utili come Convert e Math . Quello che voglio sapere è, perché è così? Dal link sopra, ci sono alcuni suggerimenti su come il team C […]

Perché? New Boolean (false) equivale a false in JavaScript?

Dalla documentazione jQuery sui tipi JavaScript viene questo snippet di codice che descrive il comportamento delle stringhe quando convertito in booleani (quell’argomento non è correlato a questa domanda, ma è proprio dove ho trovato il codice): !”” // true !”hello” // false !”true” // false !new Boolean(false) // false Ottengo i primi tre esempi, ma […]

Perché Java ha un errore del compilatore “istruzione non raggiungibile”?

Spesso trovo che quando si esegue il debug di un programma sia conveniente (anche se discutibilmente discutibile) inserire un’istruzione return in un blocco di codice. Potrei provare qualcosa di simile in Java …. class Test { public static void main(String args[]) { System.out.println(“hello world”); return; System.out.println(“i think this line might cause a problem”); } } […]

Benefici dell’ereditarietà prototipale rispetto al classico?

Così alla fine ho smesso di trascinarmi in tutti questi anni e ho deciso di imparare JavaScript “correttamente”. Uno degli elementi più problematici del design linguistico è l’implementazione dell’ereditarietà. Avendo esperienza in Ruby, ero davvero felice di vedere chiusure e digitazione dynamic; ma per la vita di me non riesco a capire quali benefici si […]