On Tuesday, 12 March 2013 at 08:28:02 UTC, Vladimir Panteleev
wrote:
On Tuesday, 12 March 2013 at 07:41:03 UTC, Lars T. Kyllingstad
wrote:
On Wednesday, 6 March 2013 at 07:27:19 UTC, Lars T.
Kyllingstad wrote:
On Tuesday, 5 March 2013 at 21:04:15 UTC, Vladimir Panteleev
wrote:
5. How about that Environment.opIn_r?
Forgot about it. :) I'll add it.
So I sat down to write this function, but then I reconsidered.
The thing is, checking whether the variable exists is exactly
the same operation as retrieving it. In other words, this:
if (key in environment)
{
auto val = environment[key];
...
}
is equivalent to:
if (environment.get(key) !is null)
{
auto val = environment.get(key);
...
}
Yes, it's just syntax sugar, and an operation supported by AAs
(which environment imitates). It's useful if you don't want to
retrieve the value of a variable right after checking if it
exists - you just want to see if it's there or not.
For AAs, 'in' returns a pointer to the element, which is null if
the element does not exist. I can't think of a good way to
implement this. Since we have to convert the raw environment
variable to a D string anyways, we'd have to do something like:
string* opIn_r(string var)
{
auto val = get(var);
if (val is null) return null;
else return [val].ptr;
}
but that seems rather pointless to me.
Lars