On 2014-03-14 12:10 PM, Adam D. Ruppe wrote:
On Friday, 14 March 2014 at 16:06:17 UTC, bearophile wrote:
And double.init is a NaN.
Yes, and the reason for this is NaN is similar to null - an invalid
state, so it can help you to catch uninitialized variables.
You should explicitly initialize the variables normally and for the
cache case, either keep a separate variable to tell if it is initialized
(since NaN might be a valid cache state, like how an int may
legitimately be 0) or compare using std.math.isNaN.
The cache library stores serialized strings mostly, and returns an empty
value if there's a get on an empty key (like redis), so I was surprised
to see get("key").unpack!double == double.init == false even when they
key doesn't exist.
So, I guess I'll have to modify msgpack-d to give doubles a 0.000
initialization value!