On 10/14/2011 09:43 PM, Jonathan M Davis wrote:
On Friday, October 14, 2011 15:29:17 Jay Norwood wrote:
Jonathan M Davis Wrote:
On Friday, October 14, 2011 11:30:25 Jay Norwood wrote:
Is it possible to overload array operations
Please be more specific. Are you asking whether a struct or class can
overload the indexing and slicing operators? If so, the answer is yes.
http://d-programming-language.org/operatoroverloading.html
- Jonathan M Davis
to be more specific, I'm interested in overloading the vector operations on
arrays described at this link, search for "vector operation"
http://www.digitalmars.com/d/2.0/arrays.html
You could probably do it if you're fancy, but there's no explicit way to have
a struct or class operate like that. If you really wanted to though, you could
overload opSlice on your struct to return a specific type which then overloaded
opBinary for + and then have that return a new struct with the changed values.
But that borders on overloaded operator abuse.
Vector operations are really only intended for arrays.
- Jonathan M Davis
I disagree. Operator overloads are there to make types act like built-in
types, which is what he wants. Overloaded operator abuse is the act of
creating a type that uses the operators for different semantics than the
built-in ones.
What you describe is actually close to how the language handles dynamic
array slices. But reproducing the behavior with operator overloading
does indeed not work nicely because of type inference. (we'd need a way
to overload the typeof operator ;))