lambda表达式的原因是以“更方便的方式”隐式生成函数对象。从下面的示例中可以看到,它不仅较不方便且较长,而且具有令人困惑的语法和符号。
它有什么用,它实际上使代码更具可读性吗?
cout << count(vec, [&](int a){ return a < x; }) << endl; // lambda
cout << count(vec, Less_than<int> (x)) << endl; // normal functor def-n
它更具可读性,因为它将函数的实现直接放在调用它的位置,从而使自然的自上而下的代码流保持不变。
您会看到,普通功能各有利弊。一方面,函数有助于减少代码中的重复,这使代码更加结构化和可读性强。另一方面,函数破坏了自然的代码流并将控制权转移到一个完全不同的位置。出于明显的原因,这可能会降低可读性:就像读一本充满嵌套的前向和后向引用的书一样。
因此,为了正确利用普通函数的属性,应该使用它们来实现经过深思熟虑,完整和孤立的抽象。这样,普通函数将提高代码的可读性。
但是对于小的“一次性”一次性使用的实用程序代码,普通功能不能很好地工作。实际上,它们会使代码的可读性大大降低。这是lambda函数出现的地方。它们允许人们在必要时将一次性的实用代码直接插入到调用点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句