c++ - 优化条件
问题描述
我对if
and for
orwhile
循环中的条件有一个简单的问题。有什么方法可以让我用更少的代码来验证这个条件吗?
if (are_you_sure != "Si" && are_you_sure != "si" && are_you_sure != "No" && are_you_sure != "no")
我不认为我可以最小化上面的代码,但我想确定一下。
解决方案
如果您有一个可以为您执行此操作的函数,您可以编写更少的代码并使其更具可读性:
if (none_of( are_you_sure, "Si", "si", "No", "no"))
// ...
当然,这个函数是必须要写的,但是用 c++17 fold-expressions 的代码并不多:
template<typename T, typename ...Opts>
auto none_of(T val, Opts ...opts)
{
return (... && (val != opts));
}
这有一些不错的属性;它可以接受任意数量的参数,也可以用于字符串以外的类型:
int n = 42;
if (none_of( n, 1, 2, 3))
// ...
确保为函数命名好,因为这会极大地影响可读性。
推荐阅读
- matlab - 改变神经网络中 Sigmoid 激活函数的斜率 - MATLAB
- html - 不能下载文件
- php - “/user/home/appname/storage/logs”中没有现有目录并且它不可构建:权限被拒绝
- powershell - powershell 脚本中的异常没有意义
- android - 如何将自定义数据发送给未来的构建器?
- javascript - 当我可以直接调用函数时,为什么在javascript中使用回调函数
- reactjs - 如何在本地运行我的 react 应用程序的生产版本?
- pyspark - Pyspark 爆破sql函数
- javascript - 如何在 Javascript/CSS 中制作一个具有恒定大小的框?
- c# - EF Core - 如何通过多个连接按可空列分组