digitalmars.D - [2.0] Remove deprecation of delete hash[key] (and change its semantics)
- Leandro Lucarella (18/18) Feb 11 2008 When doing: delete hash[key] in D 1.0, there is a deprecation error abou...
- Jesse Phillips (5/17) Feb 11 2008 I can't test it now, but I would think that hash.remove(key) would retur...
- bearophile (4/7) Feb 11 2008 In DMD 1.025 hash.remove(key) is a void.
- Leonard Dahlmann (3/24) Feb 11 2008 Even if remove does return the removed value, it won't work,
- Bruno Medeiros (6/31) Mar 05 2008 I added a bug/enhancement report for that:
When doing: delete hash[key] in D 1.0, there is a deprecation error about being an old syntax for hash.remove(key). So now, if you have an hash of objects, and you want to do explicit memory deallocation, you have to do something like this: auto tmp = hash[key]; hash.remove(key); delete tmp; Which is ugly and nonsense. Maybe remove it from 1.0 could be contraversial, but I think there is no point in conserving this ugly behaviour in 2.0. -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- Vaporeso sostenía a rajacincha la teoría del No-Water, la cual le pertenecía y versaba lo siguiente: "Para darle la otra mejilla al fuego, éste debe ser apagado con alpargatas apenas húmedas".
Feb 11 2008
On Mon, 11 Feb 2008 12:18:10 -0200, Leandro Lucarella wrote:When doing: delete hash[key] in D 1.0, there is a deprecation error about being an old syntax for hash.remove(key). So now, if you have an hash of objects, and you want to do explicit memory deallocation, you have to do something like this: auto tmp = hash[key]; hash.remove(key); delete tmp; Which is ugly and nonsense. Maybe remove it from 1.0 could be contraversial, but I think there is no point in conserving this ugly behaviour in 2.0.I can't test it now, but I would think that hash.remove(key) would return the removed value. Couldn't find mention in the docs but if it is true delete hash.remove(key); should work.
Feb 11 2008
Jesse Phillips:I can't test it now, but I would think that hash.remove(key) would return the removed value. Couldn't find mention in the docs but if it is true delete hash.remove(key);In DMD 1.025 hash.remove(key) is a void. Bye, bearophile
Feb 11 2008
Jesse Phillips Wrote:On Mon, 11 Feb 2008 12:18:10 -0200, Leandro Lucarella wrote:Even if remove does return the removed value, it won't work, since delete needs a lvalue.When doing: delete hash[key] in D 1.0, there is a deprecation error about being an old syntax for hash.remove(key). So now, if you have an hash of objects, and you want to do explicit memory deallocation, you have to do something like this: auto tmp = hash[key]; hash.remove(key); delete tmp; Which is ugly and nonsense. Maybe remove it from 1.0 could be contraversial, but I think there is no point in conserving this ugly behaviour in 2.0.I can't test it now, but I would think that hash.remove(key) would return the removed value. Couldn't find mention in the docs but if it is true delete hash.remove(key); should work.
Feb 11 2008
Leonard Dahlmann wrote:Jesse Phillips Wrote:I added a bug/enhancement report for that: http://d.puremagic.com/issues/show_bug.cgi?id=1893 -- Bruno Medeiros - MSc in CS/E student http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#DOn Mon, 11 Feb 2008 12:18:10 -0200, Leandro Lucarella wrote:Even if remove does return the removed value, it won't work, since delete needs a lvalue.When doing: delete hash[key] in D 1.0, there is a deprecation error about being an old syntax for hash.remove(key). So now, if you have an hash of objects, and you want to do explicit memory deallocation, you have to do something like this: auto tmp = hash[key]; hash.remove(key); delete tmp; Which is ugly and nonsense. Maybe remove it from 1.0 could be contraversial, but I think there is no point in conserving this ugly behaviour in 2.0.I can't test it now, but I would think that hash.remove(key) would return the removed value. Couldn't find mention in the docs but if it is true delete hash.remove(key); should work.
Mar 05 2008