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).