(2010/08/17 20:33), Lars Tandle Kyllingstad wrote:
Looks good!

I just have a few small suggestions:


1. I'd replace fromMseconds and fromUseconds with fromMilliseconds and
fromMicroseconds.  (Mseconds is, strictly speaking, megaseconds...)  And
mseconds->milliseconds, useconds->microseconds, etc.


Are not you worried about a function name getting longer?
(I completely agree that Mseconds looks like megaseconds. :) )
Hmm, maybe I'll try to add this rather:
alias seconds sec;
alias milliseconds msec;
alias microseconds usec;


2. The opOpAssign() functions should return 'this'.  Also, you can
combine them into one:

         Ticks opOpAssign(string op)(Ticks t)
                 if (op == "+" || op == "-" || op == "*" || op == "/")
         {
                 mixin("value "~op~"= t.value;");
                 return this;
         }

They should probably return by ref as well, but bug 2460 prevents that.


I cannot apply all.
As for it, a dimension occasionally changes.
[s] + [s] == [s]
[s] - [s] == [s]
but
[s] / [s] == [%]
[s] * [s] == [s^2]

In addition, the calculation between the values that dimensions are different needs attention.

[s] + [no dimension] -> x
[s] - [no dimension] -> x
[s] * [no dimension] -> [s]
[s] / [no dimension] -> [s]

I think that avoidance of coexisting is better when I consider a document.

Bug 2460 is troublesome.
It can become hotbeds of the bug if return rvalue...

I make an effort to comply with your advice as possible as.



3. The opBinary() functions can also be combined like that, or you can
even do:

         Ticks opBinary(string op)(Ticks t)
         {
                 auto lhs = this;
                 return lhs.opOpAssign!op(t);
         }

I think that's a pretty nice idiom.

-Lars




It's interesting.
I think I want compiler to generate it automatically.
_______________________________________________
phobos mailing list
phobos@puremagic.com
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to