digitalmars.D - Proposal for alias extension
- Mike Swieton (33/33) May 18 2004 It occurs to me that it would be extremely powerful to be able to do som...
- davepermen (3/36) May 18 2004 isn't that what mixins are made for now?
It occurs to me that it would be extremely powerful to be able to do something
like:
alias SomeClass.* *;
and pull in all the methods of that class into the current scope. Uses for
this:
Proxy classes
class Proxy(T)
{
...
alias T.* *;
}
More powerful mixins:
template Foo(T)
{
alias T.* *;
}
class Mixed
{
SomeClass X;
mixin Foo!(X);
this() { X = new SomeClass; }
}
Of course, it would be even simpler and more powerful if mixins had
constructors... But that rant is already somewhere ;)
I know this approaches the "accidental inclusion of a compile-time functional
language", but this would be incredibly powerful. One thought that comes to
mind: this probably should not pull in operator overloads and such, only
regular methods.
Thoughts?
Mike Swieton
__
It's kind of fun to do the impossible.
- Walt Disney
May 18 2004
isn't that what mixins are made for now?
(http://www.digitalmars.com/d/mixin.html)
In article <pan.2004.05.18.14.59.46.445402 swieton.net>, Mike Swieton says...
It occurs to me that it would be extremely powerful to be able to do something
like:
alias SomeClass.* *;
and pull in all the methods of that class into the current scope. Uses for
this:
Proxy classes
class Proxy(T)
{
...
alias T.* *;
}
More powerful mixins:
template Foo(T)
{
alias T.* *;
}
class Mixed
{
SomeClass X;
mixin Foo!(X);
this() { X = new SomeClass; }
}
Of course, it would be even simpler and more powerful if mixins had
constructors... But that rant is already somewhere ;)
I know this approaches the "accidental inclusion of a compile-time functional
language", but this would be incredibly powerful. One thought that comes to
mind: this probably should not pull in operator overloads and such, only
regular methods.
Thoughts?
Mike Swieton
__
It's kind of fun to do the impossible.
- Walt Disney
May 18 2004








davepermen <davepermen_member pathlink.com>