闭包解析如何实现函数的独立作用域?

2026-05-27 08:040阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计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被带到了另外一个上下文中一样。

阅读全文