digitalmars.D.learn - Tuple as Property Parameter
- Brian Byrne <bdbyrne wisc.edu> Feb 06 2007
- BCS <ao pathlink.com> Feb 06 2007
- Kirk McDonald <kirklin.mcdonald gmail.com> Feb 06 2007
I have a few [newcomer] questions about Tuples that I hope are easy to
answer. What I am trying to create is a property that accepts any tuple:
template Tuple( E... ) {
alias E Tuple;
}
class Foo {
int bar( E... )( E e ) {
...
}
}
Foo f = new Foo();
f.bar( 1, 2 ); // Works properly
f.bar( Tuple!( 1, 2 ) ); // Works properly
f.bar = Tuple!( 1, 2 ); // Error: Error: (f).bar(E...) has no value
Is this intended? How can I wrap up the Tuple into a single object so it
will pass off as a property?
Changing 'bar' to 'opAssign' yields a different result for the third example.
Instead of printing out an error I get an alert "abnormal program
termination."
Also, is there, or will there ever be a bracket sequence for initializing
Tuples? Tuple!( a, b, c, ... ) into something like ![ a, b, c, ... ]?
Thanks,
Brian Byrne
Feb 06 2007
Reply to Brian,I have a few [newcomer] questions about Tuples that I hope are easy to answer. What I am trying to create is a property that accepts any tuple: template Tuple( E... ) { alias E Tuple; } class Foo { int bar( E... )( E e ) { ... } } Foo f = new Foo(); f.bar( 1, 2 ); // Works properly f.bar( Tuple!( 1, 2 ) ); // Works properly f.bar = Tuple!( 1, 2 ); // Error: Error: (f).bar(E...) has no value Is this intended? How can I wrap up the Tuple into a single object so it will pass off as a property? Changing 'bar' to 'opAssign' yields a different result for the third example. Instead of printing out an error I get an alert "abnormal program termination." Also, is there, or will there ever be a bracket sequence for initializing Tuples? Tuple!( a, b, c, ... ) into something like ![ a, b, c, ... ]? Thanks, Brian Byrne
For one thing, I'm not sure that any of those should work. Template members are invalid last time I checked.
Feb 06 2007
BCS wrote:Reply to Brian,I have a few [newcomer] questions about Tuples that I hope are easy to answer. What I am trying to create is a property that accepts any tuple: template Tuple( E... ) { alias E Tuple; } class Foo { int bar( E... )( E e ) { ... } } Foo f = new Foo(); f.bar( 1, 2 ); // Works properly f.bar( Tuple!( 1, 2 ) ); // Works properly f.bar = Tuple!( 1, 2 ); // Error: Error: (f).bar(E...) has no value Is this intended? How can I wrap up the Tuple into a single object so it will pass off as a property? Changing 'bar' to 'opAssign' yields a different result for the third example. Instead of printing out an error I get an alert "abnormal program termination." Also, is there, or will there ever be a bracket sequence for initializing Tuples? Tuple!( a, b, c, ... ) into something like ![ a, b, c, ... ]? Thanks, Brian Byrne
For one thing, I'm not sure that any of those should work. Template members are invalid last time I checked.
Template member functions work (and have for some time), they're just implicitly final. -- Kirk McDonald Pyd: Wrapping Python with D http://pyd.dsource.org
Feb 06 2007








Kirk McDonald <kirklin.mcdonald gmail.com>