Can we have this Syntactic sugar.
Steven Schveighoffer
schveiguy at yahoo.com
Tue Nov 24 08:27:39 PST 2009
On Tue, 24 Nov 2009 10:44:45 -0500, Robert Clipsham
<robert at octarineparrot.com> wrote:
> Long Chang wrote:
>> class RegExp
>> {
>> enum Option{
>> X, Y, Z
>> }
>> int options;
>> this(int options = 0){ this.options = options; }
>> }
>> void main(){
>> auto reg = new RegExp("^A.", .Option( X |Y|Z ) );
>> assert( RegExp .Option.X | RegExp .Option.Y| RegExp .Option.Z
>> == reg.options );
>> }
>
> ----
> class Foo
> {
> enum Option
> {
> X = 2,
> Y = 4,
> Z = 8
> }
> int options;
> this(int opts = 0)
> {
> options = opts;
> }
> }
>
> void main()
> {
> Foo foo;
> with( foo.Option )
> {
> foo = new Foo( X | Y | Z );
> assert( X | Y | Z == foo.options );
> }
> }
> ----
>
> Is this the kind of thing you're looking for? That looks nicer than your
> proposed syntax in my opinion :)
Forgetting about the assert, you don't like this one-liner?
auto foo = new Foo(Foo.Option(X | Y | Z));
I think we can even make the Foo go away, I think Java does something like
that.
compared to your version (without assert):
Foo foo;
with(foo.Option) foo = new Foo(X | Y | Z);
-Steve
More information about the Digitalmars-d
mailing list