bearophile wrote:
- In #2 D doesn't have a standard method that returns true/false. In Python2.6 such 
method is named __nonzero__ and in python3 it's named __bool__.<<

No one has commented about that, but I think that having a way to overload 
cast(bool)foo is important. I use it in Python and I have shown why and how it 
can be used in D too. It's an easy thing to do and I think it's safe.

It's definitely required for completeness. In C++ there's a hack to do it safely (you return a pointer to a private member class). Still, I wonder if D could simply do something like defining that for classes:
if (x)  is always transformed into  if ( x!=0 )
if (!x) is always transformed into  if ( x==0 )


Don:

D1 has opCast, but here I think not even a[cast(long)i] works, because BigInt 
doesn't define it yet. When a big int can't be converted to long, it can throw 
an exception.
Yes, that's not a bad idea.

But eventually an implicit cast will be better (even if a bit less safe) in D2.

On second thoughts, y = x.toLong or y = to!(long)(x) is probably better. Casts are evil, implicit casts even more so.


Not toString(), though. You MUST be able to specify if you want leading zeros, and if you want hex or decimal.

toString() is for the default case, when you just want the decimal number with 
no leading zeros. Then you can add other methods to output hex and all you want.
(In what situations do you want to print leading zeros of a big multiprecision 
integral value? I have never faced such need so far).

BigFloat, for example.

Reply via email to