是否有一种公认的“标准”方式来格式化 C++ >= 11 中的 lambda 表达式?尤其是当放入通用算法时。
例如:
1)
auto it = std::find_if(myVec.begin(),
myVec.end(),
[id = 42] (const Element& e)
{ return e.id() == id;});
或者 2)
auto it = std::find_if(myVec.begin(),
myVec.end(),
[id = 42]
(const Element& e)
{ return e.id() == id;});
或者 3)
auto it = std::find_if(myVec.begin(),
myVec.end(),
[id = 42] (const Element& e)
{
return e.id() == id;
});
或者4)
auto it = std::find_if(myVec.begin(),
myVec.end(),
[id = 42] (const Element& e)
{
return e.id() == id;
});
或者回车、空格、制表符的任何其他组合... 注意:我在代码中使用 Allman 风格,所以理想情况下它是“适合相同的风格”。
最佳答案
我一直更喜欢为缩进的相对级别赋予其自己的语义值,并将结束分隔符与包含其匹配的开始分隔符的行垂直对齐。这使得复杂的语句(例如使用 lambda 表达式作为参数的语句)更易于阅读:
auto it = std::find_if(
myVec.begin(),
myVec.end(),
[id = 42] (const Element& e){ return e.id() == id;}
);
或者(例如,如果 lambda 主体对于一行来说太长)
auto it = std::find_if(
myVec.begin(),
myVec.end(),
[id = 42] (const Element& e){
return e.id() == id;
}
);
关于c++11 - C++11 lambda 的正确缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26510888/