2
在D語言中,我想迭代一個結構並執行特定於每個成員附加的每個註釋的邏輯。防爆。D語言:遍歷結構的成員並檢查UDA(運行時反射)
struct Pattern {
string pattern;
}
string Max {
int max;
}
string Min {
int min;
}
struct StructToValidate {
@Pattern("^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$")
string phone;
@Max(20)
@Min(3)
int someValue;
}
,然後在功能,做這樣的事情:
int main() {
StructToValidate struct;
// begin pseudocode
// for each member of struct mem = [phone, someValue] {
// if (hasUDA!(mem, Pattern)) {
// do stuff like validation on the runtime value of this member
// } else if (hasUDA!(mem, Min)) {
// ...
// } else if (hasUDA!(mem, Max)) {
// ...
// }
// }
//
return 0;
}
我該怎麼辦呢?
哇,這是聰明的。 Mixin魔法永遠不會令我驚歎。當我有更多時間時,我會嘗試這個。 – FatalCatharsis
如果它的工作,請接受答案:)但是,弦串mixins是驚人的,讓我們做任何事情 – Bauss
工作就像一個魅力。我必須做的唯一調整是刪除elses,以便處理一個成員的多個屬性。 – FatalCatharsis