4
我有一個d混入,我想用它來生成一個switch語句(案值,特別是),但儘管有它的條目,並提供正確的鍵值KeyValues
,默認情況下,始終執行的只有一個:d混入用繩子switch語句
class DataStore(KeyValues...) {
void stringSetData(string key, string data) {
switch(key) {
foreach(D; KeyValues) {
mixin("case \"" ~ D.Name ~ "\": set(to!(D.Type)(data)); break;");
}
default:
throw new Exception("Invalid meta key"); break;
}
}
}
我已經與硬編碼值進行了測試,它工作正常,所以我懷疑是我可能會做什麼毛病我的mixin本身。我如何才能讓它按預期工作?
你甚至可以在'switch'裏面加入'foreach'嗎?我從來沒有看到過... – Mehrdad
邁赫達德:這是一個'foreach'了一個元組,因此它在編譯時展開(見「的foreach對元組的」 [這裏](HTTP://www.d-programming- language.org/statement.html#ForeachStatement))。 –
馬克:我認爲'KeyValues' /'KeyValue'是一個錯字? –