C'è una cosa che non riesco a capire in JavaScript o Python, e questa è la sintassi delete o del .
In JavaScript:
obj = {ha: 123, hi: 3.14}
delete obj.ha # now obj is {hi: 3.14}
In Python:
d1 = {"ha" : 123, "hi" : 3.14}
del d1["ha"] # now d1 is {'hi': 3.14}
Ma cosa significa delete obj.ha o del d1["ha"] ?
In JavaScript, delete obj.ha può significare delete 123 , perché obj.ha valuta 123 .
Allo stesso modo, in Python, del d1["ha"] può significare del 123 perché d1["ha"] valuta a 123 .
Quindi non ha senso delete 123 in entrambi i casi.
Quindi stiamo dicendo, beh, la maggior parte delle volte, le regole per valutare qualcosa e poi applicarlo al lavoro con delete o del , ma a volte, semplicemente "magicamente" funzionano nell'altro modo?
Ad esempio, penso che Smalltalk o Ruby abbiano molto più senso, che è h.delete("ha") , vale a dire passare il messaggio all'oggetto h , che è un dizionario o un hash, che per il chiave ha , rimuovila. Questo è coerente con tutto il resto. Quindi non abbiamo la cosa strana come delete obj.ha - oh non è uguale a delete 123 .
(Python h.pop(key) ha lo stesso effetto di del h[key] , a quanto pare, ma avere la sintassi del h[key] sembra ancora strano).