有条件地将默认参数传递给函数(使用“?”运算符)
Conditional passing of a default argument to a function (using the '?' operator)
有一个函数声明为
CalculateTimeSilence(float SilenceThresholdOverride = -1.f);
有没有办法调用它,以便我可以利用条件 '?'运算符为 SilenceThresholdOverride 选择一个值或 保留默认值?
表示为伪代码:
CalculateTimeSilence(bUseOverride ? OverrideValue : default);
,其中 'default' 将被编译器替换为参数在其声明中的默认值(在本例中为 -1.f)。
如果有这样的方法,它将消除匹配默认值或编写 If-Else 语句的需要。
谢谢,
塞巴斯蒂安
当你在调用函数时没有指定参数,那么在调用处添加默认值,所以当你调用
CalculateTimeSilence();
那么你实际上是在调用
CalculateTimeSilence(-1.f);
没有default
或类似的机制来获取默认参数,但您可以这样做"manually"
const float default_value = -1.f;
CalculateTimeSilence(float SilenceThresholdOverride = default_value);
然后你可以随意调用它:
CalculateTimeSilence(bUseOverride ? OverrideValue : default_value);
然而,虽然条件运算符有时会派上用场,但它通常会混淆代码并使其难以阅读。在这种情况下,我可能宁愿写
auto x = bUseOverride ? OverrideValue : default_value;
CalculateTimeSilence(x);
有一个函数声明为
CalculateTimeSilence(float SilenceThresholdOverride = -1.f);
有没有办法调用它,以便我可以利用条件 '?'运算符为 SilenceThresholdOverride 选择一个值或 保留默认值?
表示为伪代码:
CalculateTimeSilence(bUseOverride ? OverrideValue : default);
,其中 'default' 将被编译器替换为参数在其声明中的默认值(在本例中为 -1.f)。 如果有这样的方法,它将消除匹配默认值或编写 If-Else 语句的需要。
谢谢, 塞巴斯蒂安
当你在调用函数时没有指定参数,那么在调用处添加默认值,所以当你调用
CalculateTimeSilence();
那么你实际上是在调用
CalculateTimeSilence(-1.f);
没有default
或类似的机制来获取默认参数,但您可以这样做"manually"
const float default_value = -1.f;
CalculateTimeSilence(float SilenceThresholdOverride = default_value);
然后你可以随意调用它:
CalculateTimeSilence(bUseOverride ? OverrideValue : default_value);
然而,虽然条件运算符有时会派上用场,但它通常会混淆代码并使其难以阅读。在这种情况下,我可能宁愿写
auto x = bUseOverride ? OverrideValue : default_value;
CalculateTimeSilence(x);