WithStatement

KennyTM~ kennytm at gmail.com
Sun Jul 24 13:12:34 PDT 2011


On Jul 25, 11 03:44, Shahid wrote:
> I've been using the WithStatement alot recently and there's a situation
> that's really bugging me.
>
> my code is similar to the following:
>
> struct Struct
> {
> 	enum Enum1 { A, B, C }
> 	enum Enum2 { D, E, F }
>
> 	...
> }
>
> T foo( ... )
> {
> 	with ( Struct )
> 	{
> 		bar( Enum1.A );
> 		...
> 		...
> 	}
> }
>
> I'm wondering what others think about extending the WithStatement to take
> a colon, which would create an implicit scope similar to how Attributes
> work. eg:
>
> T func( ... )
> {
> 	with ( Struct ):
> 	
> 	bar( Enum1.A );
> 	...
> 	...
> }

@property string usingNamespace(S)() {
     string res = "";
     enum prefix = "alias " ~ S.stringof ~ '.';
     foreach (m; __traits(allMembers, S)) {
         res ~= prefix ~ m ~ ' ' ~ m ~ ';';
     }
     return res;
}

struct Struct {
	enum Enum1 { A, B, C }
	enum Enum2 { D, E, F }
}

void main() {
     mixin(usingNamespace!Struct);
     auto a = Enum1.A;
     auto b = Enum2.F;
}




More information about the Digitalmars-d mailing list