On 01/07/2012 02:11 PM, RenatoL wrote:
> Very quick question
>
> import std.stdio;
> void main()
> {
> auto arr1 = ["uno":1, "due":2, "tre":3];
> arr1.remove("xxx");
> }
>
> also in this case the compiler does not say anything and the
> program goes out silently ... why? Would not it be better if an
> exception was raised?
I think that could be a valid design choice. On the other hand, since
what is required is to remove the element, it is not really an error if
the object is already missing. The requirement is met.
> After all if i write:
>
> writeln(arr1["xxx"]);
>
> runtime expresses its disappointment...
You get the exception more simply by this:
auto e = arr1["xxx"];
But that's understandable because the [] operator is supposed to provide
access to a usable object. Since there is no general concept of a null
object, there is no object to provide access to, so there is nothing
else to do but to throw.
Ali