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.