gpt4 book ai didi

d - D 中的静态 if 表达式?

转载 作者:行者123 更新时间:2023-12-04 00:15:08 24 4
gpt4 key购买 nike

如何在 D 中模拟静态 if 表达式(不是语句)?

auto foo = (({ static if (cond) { return altA; } else { return altB; })());

这可行,但如果您嵌套委托(delegate),则会创建委托(delegate)和 ldc 错误。我确信它可以通过一些模板魔法作为 expr 来完成,只是我还不够擅长。

最佳答案

由于 static if 不会创建新范围,因此您可以这样做:

static if (cond)
auto foo = altA;
else
auto foo = altB;

// Use foo here as normal
foo.fun();

如果你真的希望它是一个表达式,你可以这样做:

template ifThen(bool b, alias a, alias b) {
static if (b)
alias ifThen = a;
else
alias ifThen = b;
}

auto foo = ifThen!(cond, altA, altB);

alias 参数存在一些限制,可能会导致此解决方案不理想,因此它可能适合您,也可能不适合您。

关于d - D 中的静态 if 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64448872/

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