gpt4 book ai didi

C++ 更短的 lambda 语法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:36 25 4
gpt4 key购买 nike

我是 C++ 的新手,最近刚从 Swift 转过来。有什么方法可以缩短 lambda 语法?

我有很多行,例如:

columns = {
Col(_("Name"), "string", [] (Person *p) {
return p->Name();
}),
Col(_("Age"), "int", [] (Person *p) {
return p->Age();
}),
Col(_("Bank"), "string", [&banks] (Person *p) {
return banks.lookUp(p->Identifier()).Name;
}),
//..etc..
};

一些列需要更长的 lambda,但因为它是编写 lambda 的语法,所以它的长度与它本身的内容一样长。

lambda 语法是否可以简化? (比如通过隐式参数或隐式返回最后一条语句)

例如,在 Swift 中,我可以做这样的事情,结果是一样的:

    Col(_("Age"), "int", { $0.Age() }),

编辑:添加银行列作为更复杂的示例。

最佳答案

如果你总是调用一个成员函数,你可以使用mem_fn :

Col(_("Name"), "string", std::mem_fn(&Person::Name)),

mem_fn 在传递对象类型的指针或引用时起作用。

关于C++ 更短的 lambda 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36775231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com