【发布时间】:2011-01-11 04:11:47
【问题描述】:
在Effective C++ Meyers 的第 175 页第 1 段中谈到了广义函子和绑定:
我发现
tr1::function可以让你做什么 太神奇了,让我全身发麻 超过。如果你没有刺痛,它可能 因为你盯着 ...的定义,想知道什么是 继续……
我同意他的绑定和功能。关于 lambda,嗯,我了解 lambda 的作用以及它是如何做到的,但是有人可以发布一本书式的令人兴奋的 sn-p 或一个口头大纲,说明为什么 lambda 应该(用迈耶斯的术语)让我大吃一惊吗?我之所以这么问,是因为 C++ 中使用占位符语法的每个领域对我来说都像是一个 hack(是的,我对函数式方法足够了解,所以请不要基础),我同意它的使用方式在绑定和 MPL 中;但是,在 lambda 的情况下,我只是希望它是合理的,这样我就可以决定天气我应该将它输入到我的曲目中。
-- 编辑--
This SO answer 提到了仅使用占位符语法的仿函数的内联创建,他提到了高级用法,这可能就是我所追求的……在高级用法中,它仍然只是内联创建仿函数吗?
【问题讨论】:
-
您阅读过 BLL 文档吗?有很多例子在我第一次阅读时让我大吃一惊。例如:
sort(a, b, _1 < _2);。然后搜索 SO。 -
(+1) 是的,我做到了(至少前 10 页)——而且我理解这种用法。是这样吗?
-
Lambdas 都是关于匿名函数的内联创建,而 Boost.Lambda 在讨论 C++0x lambdas 包含之前就为您提供了执行此操作的工具 - 所以我不会说 “就是这样?”。 (嘿,不要声称我的 +1 ;)
-
BB 和 BLL 是分开进化的,因此是重叠的。请参阅boost.org/doc/libs/1_41_0/doc/html/lambda/s08.html——这应该可以消除任何混淆。
-
谢谢大家:尽管=D,您应该已经做出了答案,但是很难接受三个答案中的任何一个。我想我会使用 lambda 来做一些简单的事情——我只是在阅读文档,因为我遵循了精神的参考。我希望他们将函数式编程硬连接到语言中——包括精神让我的编译器屈服。
标签: c++ boost functional-programming boost-lambda