2014-04-15 3 views
3

다소 간단해야하지만 그렇지는 않습니다.foreach 루프 사용 - 변수를 읽을 수 없습니다.

여기 내 코드입니다 :

const string[] arrayWithClassNames = ["Math","SomeClass"]; 
foreach (string s; arrayWithClassNames) 
{ 
    methods = ... 
    foreach ... 
} 

오히려 간단 허 : 내가 원하는 무엇

string cases() 
{ 
    string ret = ""; 
    string[] methods; 

    methods = [__traits(derivedMembers,mixin("Math"))]; 
    foreach (string s; methods) ret ~= "case \"" ~ s ~ "\": return Math."~s~"(params);"; 

    methods = [__traits(derivedMembers,mixin("OtherClass"))]; 
    foreach (string s; methods) ret ~= "case \"" ~ s ~ "\": return OtherClass."~s~"(params);"; 

    return ret; 
} 

string execute(string what, string[] params) 
{ 
    switch (what) 
    { 
     mixin(cases()); 
     default: break; 
    } 
    return ""; 
} 

? 문제는 다음과 같이 불평합니다.

variable 's' cannot be read at compile time. 

아이디어가 있으십니까?

답변

5

컴파일 타임 루프를 만들려면 튜플을 반복해야합니다. 이것을 시도하십시오 :

+0

A-M-A-Z-I-N-G! 고마워요! :-) –