闭包解析如何实现函数的独立作用域?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3325个文字,预计阅读时间需要14分钟。
我发现英文真的很给力。这篇随笔是对闭包这个概念的简单介绍。为了轻松一些,我用了Fun with Closure这个。有点像闭包的东西,我先找了一些有点像闭包的东西。
我发现英文标题真的非常不给力。
这篇随笔是对“闭包”这个东西的简单介绍。为了轻松一些,用了Fun with closure这个标题。
有点儿像闭包的东西我先找了几个有点儿像闭包的东西。摆出来看看。第一个东西是C++的Functor:
1 struct add_x { 2 add_x(int x) : m_x(x) { } 3 int operator() (int y) { return m_x + y; } 4 5 private: 6 int m_x; 7 }; 8 9 int value = 1; 10 11 std::transform(input, input + size, result, add_x(value));
这段代码期望将 input 集合中的每一个元素使用 add_x 映射到 result 集合中。这里,add_x是一个 functor。为了将在函数栈空间上定义的变量value引入到functor中来,我们必须采用成员变量的方式对其进行复制(或者引用)。这样一来,好像在栈上定义的值value被带到了另外一个上下文中一样。
本文共计3325个文字,预计阅读时间需要14分钟。
我发现英文真的很给力。这篇随笔是对闭包这个概念的简单介绍。为了轻松一些,我用了Fun with Closure这个。有点像闭包的东西,我先找了一些有点像闭包的东西。
我发现英文标题真的非常不给力。
这篇随笔是对“闭包”这个东西的简单介绍。为了轻松一些,用了Fun with closure这个标题。
有点儿像闭包的东西我先找了几个有点儿像闭包的东西。摆出来看看。第一个东西是C++的Functor:
1 struct add_x { 2 add_x(int x) : m_x(x) { } 3 int operator() (int y) { return m_x + y; } 4 5 private: 6 int m_x; 7 }; 8 9 int value = 1; 10 11 std::transform(input, input + size, result, add_x(value));
这段代码期望将 input 集合中的每一个元素使用 add_x 映射到 result 集合中。这里,add_x是一个 functor。为了将在函数栈空间上定义的变量value引入到functor中来,我们必须采用成员变量的方式对其进行复制(或者引用)。这样一来,好像在栈上定义的值value被带到了另外一个上下文中一样。

