On Friday, 8 November 2013 at 03:35:34 UTC, Ross Hays wrote:
Awesome that seems to do what I was going for. I had tried a similar approach with @property dispatch and the subtraction of 'x', but I had left out the static if and had the opDispatch returning a ref of the entry in the array (so there would just be the one @property still) but that resulted in "Error: no property 'x' for type 'test.Vector!(2, float).Vector'".

This is interesting, though probably not a very safe way to handle vectors in the real world (even more so if they are going to be vectors of more than length 3).

Indeed. Presumably you could modify it to shift the starting letter (which is currently hardcoded as 'x') leftward as N grows bigger to allow it to support more. But really, you would probably be better to just use tuples. Technically a Vector is just a Tuple!(T, "x", T, "y") so you could probably do better by writing some metaprogramming to make one of those if you wanted a short-hand for it. Otherwise just doing "alias Vector2(T) = Tuple!(T, "x", T, "y");" would work great in 2.064.2, if I remember the syntax correctly. Then Vector2!float would work. Similarly Vector3 could be made and so on.

http://dlang.org/phobos/std_typecons.html#.Tuple
http://dlang.org/changelog.html#eponymous_template

Reply via email to