g9k*_*g9k 0 c++ coding-style c++17
我想为 const 分配一些值,它曾经是这样的
const int x = animal == "cat" ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)
但现在,我想要这样做,如果animal == cat,则分配0,如果dog返回1,否则2到const。嗯,实际上,事情没那么简单,但可以说使用方程 a,在本例中使用方程 b,在本例中使用方程 c。
当然,我总是可以做类似的事情
const int x = FunctionToHandleIt();
Run Code Online (Sandbox Code Playgroud)
但逻辑就是这么简单。我认为代码直接写出表达式要干净得多,这样人们就可以查看它并确切地知道当时发生了什么,而不是通过函数的标题和定义来查看发生了什么。
处理这样的情况,将一些东西分配给超过几行的 const ,更好的方法是什么?但是,不值得为它创建一个完整的函数吗?
借助 lambda 函数,无需在代码中的某处指定另一个函数的定义。
const string animal = "dog";
const int x = [animal]() {
if (animal == "cat")
return 0;
else if (animal == "dog")
return 1;
else
return 2;
}();
cout << x << endl;
Run Code Online (Sandbox Code Playgroud)
该变量animal被捕获并在内部代码块中进行验证。之后返回相应的值。