gpt4 book ai didi

D mixin 与字符串 switch 语句

转载 作者:行者123 更新时间:2023-11-30 23:46:14 25 4
gpt4 key购买 nike

我有一个 D mixin,我想用它来在字符串值上生成 switch 语句(特别是 case 值),但尽管 KeyValues在其中包含条目并提供正确的键值,默认情况始终是唯一执行的:

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 本身可能做错了。我怎样才能让它按预期工作?

最佳答案

break mixin 内部正在打破 foreach循环,而不是 switch .将其替换为 return ,或带有标签的 break .

顺便说一句,如果您尝试在启用警告的情况下编译此代码,则会从 DMD 收到一些奇怪的错误消息。

关于D mixin 与字符串 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6887406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com