【发布时间】:2018-12-18 09:10:42
【问题描述】:
我手头有一个小问题。假设有一个只有 2 个操作数的 if 条件,但我想让操作动态化。
void somFunc()
{
if(a && b) /*1*/
{
}
else if(a1 && b1) /*2*/
{
}
else if(a || b) /*3*/
{
}
else if(a1 || b1) /*4*/
}
基本上,1 和 3 的参数完全相同,操作不同,2 和 4 也是如此。我想将这 4 个操作减少到 2。
我想知道是否有一种方法可以使 oper 动态化。假设我们只有 2 个操作 && 和 ||
我可以以任何方式使用模板吗?
如果有人想知道我为什么需要这个,那么在一个大的 if/else 中有 n 个 if 条件。如果我以某种方式实现了这一点,我会将条件减少一半。
【问题讨论】:
-
这里不能引入
oper这样的特定关键字,但可以创建一个函数oper(),它接受两个参数并返回一个boolean。如果您想更进一步,可以将该函数作为参数提供给somFunc,使其更加通用 -
@Damien。我明白你的意思。我的问题的一些背景是,这是一个小型且受约束的规则引擎,其中规则是在外部定义的,包括操作。样本条件将是(X 存在)和(Y 不存在)。或类似 if (X exists) 或 (Y exists)。
-
@Ajit 感谢您的澄清。在这种情况下,已经提供的两个答案应该可以正常工作。