On Sunday, 6 September 2015 at 08:48:32 UTC, bioinfornatics wrote:
On Sunday, 6 September 2015 at 07:34:36 UTC, ParticlePeter wrote:
I am working on a struct vector. The data is stored in a member static array and I want to be able to forward all array properties except length to vector. Reason is I have free functions f that take vector(s) as arguments, such that f(vector) and vector.f via UFCS is possible. Using alias array this in the case of length function/array property is problematic, as length(vector) obviously uses the free function but vector.length the array property.

What would be the simplest way to disable the array.length property for the vector struct?

I would prefer not to implement length as a vector member function and call it inside the free function as this is inconsistent with the other free funcs.

Hi,

If you are looking for somethin like delegator from ruby: http://ruby-doc.org/stdlib-2.0.0/libdoc/forwardable/rdoc/Forwardable.html

No, not this one. It is O.k. for vector to be implicitly converted to an array, and in such a case array property length should be used.

Or by using mixin delegates: http://forum.dlang.org/post/jitn9v$20u4$1...@digitalmars.com

I think this approach (in particular Jacobs suggestion) would be useful if I would like to forward array member properties for lot of different struct/classes but for now it is sufficient for the vector struct.

I took a look at opIndex, opSlice, opIndexAssign and opIndexOpAssign but find the examples very confusing. Also its not clear for me which of these operators I have to implement to have full array functionality on the vector struct. In the end all that I want is "just" to disable access to array.length through vector and alias this array.

Reply via email to