| Thread overview | |||||||
|---|---|---|---|---|---|---|---|
|
March 05, 2012 [Feature Request] Forwardable as Ruby does | ||||
|---|---|---|---|---|
| ||||
dear, I would like a easy way to forward as does ruby: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/forwardable/rdoc/Forwardable.html I have already something close: - https://gist.github.com/1969776 (me) - http://paste.pocoo.org/show/uoD89CCjX5H3m6GvPvW6/ (dav1d) But it works only for array. I have try to do this purpose: https://gist.github.com/1974033 but i am too new in D This feature will be really awesome and could be go into std.traits | ||||
March 05, 2012 Re: [Feature Request] Forwardable as Ruby does | ||||
|---|---|---|---|---|
| ||||
Posted in reply to bioinfornatics | bioinfornatics <bioinfornatics@fedoraproject.org> wrote: > dear, > I would like a easy way to forward as does ruby: > http://www.ruby-doc.org/stdlib-1.9.3/libdoc/forwardable/rdoc/Forwardable.html > > I have already something close: > - https://gist.github.com/1969776 (me) > - http://paste.pocoo.org/show/uoD89CCjX5H3m6GvPvW6/ (dav1d) > > But it works only for array. > > > I have try to do this purpose: https://gist.github.com/1974033 > > but i am too new in D > > This feature will be really awesome and could be go into std.traits Check 'opDispatch' and 'alias this'. | |||
March 05, 2012 Re: [Feature Request] Forwardable as Ruby does | ||||
|---|---|---|---|---|
| ||||
Posted in reply to kennytm | Le lundi 05 mars 2012 à 17:55 +0000, kennytm a écrit :
> bioinfornatics <bioinfornatics@fedoraproject.org> wrote:
> > dear,
> > I would like a easy way to forward as does ruby:
> > http://www.ruby-doc.org/stdlib-1.9.3/libdoc/forwardable/rdoc/Forwardable.html
> >
> > I have already something close:
> > - https://gist.github.com/1969776 (me)
> > - http://paste.pocoo.org/show/uoD89CCjX5H3m6GvPvW6/ (dav1d)
> >
> > But it works only for array.
> >
> >
> > I have try to do this purpose: https://gist.github.com/1974033
> >
> > but i am too new in D
> >
> > This feature will be really awesome and could be go into std.traits
>
> Check 'opDispatch' and 'alias this'.
alias this is not the answer as it forward all, i fyo want select for this member forwad this method and for another this one ...
opDispaytch is not really easy to use for this. my first code do this in 1 line and it is easy to understand hat it do. In 1 line i forward 3 method to a member. This save time, code and bug.
| |||
March 06, 2012 Re: [Feature Request] Forwardable as Ruby does | ||||
|---|---|---|---|---|
| ||||
Posted in reply to bioinfornatics | 05.03.2012 22:06, bioinfornatics пишет: > opDispaytch is not really easy to use for this. my first code do this in > 1 line and it is easy to understand hat it do. In 1 line i forward 3 > method to a member. This save time, code and bug. > > So what's the problem with opDispatch? By the way, don't do things like mixin(SomeTypeArgument.stringof) - it will not work in every case (name conflicts, nested structs/classes etc.) and it's unnecessary conversion to string and back to code. So it wasn't a good idea to change dav1d's variant this way. | |||
March 06, 2012 Re: [Feature Request] Forwardable as Ruby does | ||||
|---|---|---|---|---|
| ||||
Posted in reply to bioinfornatics | bioinfornatics <bioinfornatics@fedoraproject.org> wrote: > Le lundi 05 mars 2012 ‡ 17:55 +0000, kennytm a Ècrit : >> bioinfornatics <bioinfornatics@fedoraproject.org> wrote: >>> dear, >>> I would like a easy way to forward as does ruby: >>> http://www.ruby-doc.org/stdlib-1.9.3/libdoc/forwardable/rdoc/Forwardable.html >>> >>> I have already something close: >>> - https://gist.github.com/1969776 (me) >>> - http://paste.pocoo.org/show/uoD89CCjX5H3m6GvPvW6/ (dav1d) >>> >>> But it works only for array. >>> >>> >>> I have try to do this purpose: https://gist.github.com/1974033 >>> >>> but i am too new in D >>> >>> This feature will be really awesome and could be go into std.traits >> >> Check 'opDispatch' and 'alias this'. > > alias this is not the answer as it forward all, i fyo want select for this member forwad this method and for another this one ... > > opDispaytch is not really easy to use for this. my first code do this in 1 line and it is easy to understand hat it do. In 1 line i forward 3 method to a member. This save time, code and bug. You can just mixin an opDispatch function, like (not tested, only works for functions) mixin template Forward(alias member, s...) { auto opDispatch(string name, T...)(T args) { static assert(canFind(s, name)); return mixin("member." ~ name ~ "(args)"); } } or use a foreach over 's' and mixin the function/member definitions for each name. | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply