繁体   English   中英

将默认参数有条件地传递给 function(使用“?”运算符)

[英]Conditional passing of a default argument to a function (using the '?' operator)

有一个 function 声明为

CalculateTimeSilence(float SilenceThresholdOverride = -1.f);

有没有办法调用它,以便我可以利用条件“?” 操作员要么选择SilenceThresholdOverride的值,要么将其保留为默认值

表示为伪代码:

CalculateTimeSilence(bUseOverride ? OverrideValue : default);

,其中 'default' 将被编译器替换为参数在其声明中的默认值(在本例中为 -1.f)。 如果有这样的方法,它将消除匹配默认值或编写 If-Else 语句的需要。

谢谢,塞巴斯蒂安

当您在没有指定参数的情况下调用 function 时,默认在调用处添加,所以当您调用

CalculateTimeSilence();

那么你实际上是在打电话

CalculateTimeSilence(-1.f);

没有default或类似的机制来获取默认参数,但您可以“手动”执行此操作

const float default_value = -1.f;

CalculateTimeSilence(float SilenceThresholdOverride = default_value);

然后您可以根据需要调用它:

CalculateTimeSilence(bUseOverride ? OverrideValue : default_value);

然而,虽然条件运算符有时会派上用场,但它通常会混淆代码并使其难以阅读。 在这种情况下,我也许宁愿写

auto x = bUseOverride ? OverrideValue : default_value;
CalculateTimeSilence(x);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM