因它能做什么或因为它做了而关闭

2024-03-22

好吧,这是一个有点迂腐的问题,但我想确保我正确理解了这个定义。闭包绰号是用来描述匿名函数的can提升局部作用域中的变量(无论它们实际上是否这样做)或仅当它们do在局部范围内提升变量?

换句话说,如果匿名函数具有ability在其本地范围内提升变量(因为该语言提供了该功能),但没有,它仍然被视为闭包吗?

我的理解是,只有当局部变量被解除时,它才是闭包。但是不这样做(即使可以)的匿名函数不是闭包。因此,并非所有匿名函数都是闭包,但所有闭包都是匿名函数。

再次,为我的迂腐感到抱歉,但这些事情困扰着我。 :)


假设您的意思是在计算机科学的背景下......

闭包是一个一流的函数,它捕获其定义环境中自由变量的词法绑定。一旦它捕获了词法绑定,该函数就变成了一个闭包,因为它“关闭”了这些变量。

请注意,这意味着闭包仅存在于运行时。

对于一个函数来说,闭包与匿名或命名函数是正交的。您可以创建一种语言,允许您将命名函数定义为闭包。

这是 Python 中的“命名”闭包:

def maker():
  count=[0]
  def counter():
    count[0]=count[0]+1
    return count[0]
  return counter
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

因它能做什么或因为它做了而关闭 的相关文章

  • 实现字典的 Applicative 实例(Map、关联数组)

    为关联数组实现函子实例 本质上是映射操作 似乎很简单 例如 参见Functor定义 1 然而 Applicative实例未定义 地图不是应用程序有一个很好的理论理由吗 它们需要什么额外的限制才能成为应用程序 1 https hackage
  • 如何解释方案表达式 '(a 'b)

    a b 给出答案 a b 当 a 没有绑定 未加引号 时 这是如何工作的 这就是我们计算表达式时发生的情况 a b gt a b The quote 是简写quote http docs racket lang org guide quot
  • 如何在 React Native ListView 中将项目居中?

    我试图在选择一个项目时将其置于水平列表视图的中心 我当前的策略是首先测量项目并滚动到视图中引用项目的 x 坐标 目前 每当我按下某个项目时ListView滚动到最后x 538 有没有更简单的方法来实现这一点 同时保持代码无状态 功能 con
  • 实际上什么时候创建闭包?

    以下情况是否会创建闭包foo 但不适合bar Case 1 foo是一个带有仅具有全局作用域的作用域链的闭包 Case 2 与案例1相同 Case 3
  • 如何在本地闭包中调用非逃逸闭包? [复制]

    这个问题在这里已经有答案了 我有一个看起来像这样的函数 func test closure gt let localClosure closure localClosure 这只是一个例子 并不能完全反映我遇到的问题 显然在这里我可以直接打
  • Scala:抽象类型模式 A 未被选中,因为它已被擦除消除

    我正在编写只能捕获特定类型异常的函数 def myFunc A lt Exception try println Hello world or something else catch case a A gt warning abstrac
  • 如何获取数组中每个数字的阶乘值?

    我试图使用此方法获取数组中每个项目的阶乘值 但这仅输出一个值 任何人都可以帮助我找出我做错的地方吗 function mathh arr fn for i 1 i lt sizeof arr i arr2 arr2 i fn arr i r
  • 阻塞事件循环

    我正在通过 Nodeschool 参加 函数式 Javascript 研讨会 其中一项练习的标题是 阻止事件循环 我很难理解它 通过过去的练习 我确保真正尝试理解解决方案 这样如果我必须重做问题 我就会理解如何解决它 而不是第一次就破解它
  • JDK 8 中的默认值是 Java 中多重继承的一种形式吗?

    JDK 8 中的一项新功能允许您添加到现有接口 同时保留二进制兼容性 语法就像 public interface SomeInterface void existingInterface void newInterface default
  • 在 Javascript 构造函数中引用实例变量

    我试图通过执行以下操作来维护对象的状态 obj function this foo undefined this changeState function function this foo bar This is contrived bu
  • 寻找一种重构 D3.js 风格的方法链接模式的方法

    在学习 D3 js 时 我遇到了博客文章 http bost ocks org mike chart 解释其可重用代码单元背后的主要设计模式 我复制了下面的相关代码 下面呈现的模式的方式正是在 D3 代码库和插件中使用的方式 example
  • 什么是(函数式)反应式编程?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我读过维基百科的文章反应式编程 http en wikipedia org wiki Reac
  • 封装的闭包与类?

    我是 JS 来自 C etc 的新手 我突然想到闭包似乎是比类更简单 更方便的处理封装的方法 这段代码似乎给出了一种处理封装的简单方法 function addProperty o var value o get function retu
  • 我应该选择哪种函数式编程语言作为第一种函数式编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想学习一种函数式编程语言 以了解不同的编程范例 我的编程背景 Java 我刚刚通过了 SCJP 考试 一些 ruby 和非常有限的 Rails
  • JavaScript 闭包与匿名函数

    我和我的一个朋友目前正在讨论 JS 中什么是闭包 什么不是 我们只是想确保我们真正正确地理解它 我们以这个例子为例 我们有一个计数循环 想要在控制台上延迟打印计数器变量 因此我们使用setTimeout and closures捕获计数器变
  • f# 运行总计序列

    好吧 这看起来应该很容易 但我就是不明白 如果我有一个数字序列 如何生成由运行总计组成的新序列 例如 对于序列 1 2 3 4 我想将其映射到 1 3 6 10 以适当的功能方式 Use List scan https msdn micro
  • Ruby 反向柯里化:这可能吗?

    关于 Ruby 1 9 x 中的柯里化 我一直在某些地方使用它 并且可以像基本上支持 proc 参数的默认参数一样进行翻译 p proc x y z x y z p curry 1 gt returns a lambda p curry 1
  • JavaScript:事件处理程序:在哪里声明变量 - 本地变量还是闭包(与开销)?

    我发现自己编写了各种包含事件处理程序的函数 感觉最好在父函数 闭包 的根部声明处理函数所需的变量 特别是如果它们是 jQuery 选择 多个处理程序所需的常量 或者需要一些我不想要的预计算每次触发事件时重复 一个简单的例子 var touc
  • “函数是第一等值”这到底是什么意思?

    有人可以用一些很好的例子清楚地解释它吗 在解释函数式编程时 我在 Scala 中遇到了这句话 一流 并不是一个正式定义的概念 但它通常意味着一个实体具有三个属性 有可能used 不受限制 只要 普通 值可以 即从函数传递和返回 放入容器等
  • 纯函数怎么能做IO呢?

    我最近了解到莫纳德随机数 http hackage haskell org package MonadRandom 0 1 13 docs Control Monad Random Class html t 3aMonadRandom图书馆

随机推荐

  • 模运算从右到左的二进制方法解释?

    我一直在研究来自维基百科的大数模的链接 这是伪代码 function modular pow base exponent modulus result 1 while exponent gt 0 if exponent mod 2 1 re
  • 如何让 FullCalendar 显示来自 JSON 源的信息?

    我正在使用 FullCalendar 设置一个应用程序 http arshaw com fullcalendar http arshaw com fullcalendar 这将允许用户查看客户端调度信息以及通过管理界面调度客户端 我想使用
  • 如何在Play 2.3中使用publish/publishLocal发布webjar资源?

    由于 Play Framework 2 3 资源被打包到一个 jar 存档文件中 https www playframework com documentation 2 3 x Assets How are public assets pa
  • 网页中是否有相当于 SVG 图像精灵的功能?

    SVG 图像不是位图 因此 除非我遗漏了某些内容 您不能像处理网页上使用的其他图像文件那样进行精灵绘制 请参阅http www alistapart com articles sprites http www alistapart com
  • 如何在我的网站(如 Gmail)上进行视频聊天? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个免费的开源项目或只是一些可用于在我的网站上提供视频聊天功能的代码 任何人都知道这是否可以轻松完成 我对 PHP 和 jque
  • wp_enqueue_style 和 rel 除了样式表之外?

    我创建 或者更好地尝试 使用 Less 创建我的第一个 WordPress 主题 我所做的就是在我的functions php中使用这样的脚本 wp register style screen css get bloginfo templa
  • 即使删除文件后,开发日志文件仍超出 GitHub 的文件大小限制

    我尝试在我的应用程序中提交一些更改 但收到一条错误 指出开发日志太大 为 512MB 我删除了开发日志文件并再次尝试 仍然出现相同的错误 日志大小为 103 2MB 我也尝试过rake log clear有同样的错误 显然开发日志文件正在被
  • Web API 2 是否可以以编程方式加载路由/控制器?

    我目前正在开发一个企业 Web 应用程序 该应用程序使用 WCF 来实现 REST API 它利用 VirtualPathProvider 捕获对 svc 文件 实际上并不存在 的请求 然后动态构建它们以动态加载关联的 WCF 服务 这允许
  • 如何查找 mstsc 的使用时间以及由谁使用?

    我们的团队地理位置分散 他们会使用远程桌面连接许多虚拟机 我想了解谁正在访问远程桌面会话以及使用了多长时间 我尝试用 powershell 来实现 我编写了一个脚本 用户将在其中使用 powershell 调用 mstsc 它将记录谁已登录
  • 单表继承和Yaml配置

    我想在我的项目中使用 symfony2 doctrine 的单表继承 但我找不到任何带有 yaml 配置的工作示例 官方文档中仅提供了注释配置 我找到了 xml 示例 但我想使用 yaml 配置 有人可以帮助并分享一些工作代码吗 好的内置转
  • 如何使用迭代器迭代二维ArrayList?

    我想迭代二维ArrayList包括String使用迭代器的对象 我还想以一种让我选择是否要首先水平 行 迭代还是垂直 列 迭代的方式使用boolean价值 我怎样才能在java中实现这个 到目前为止我已经尝试过的 public class
  • 如何在 MySQL 中执行“如果不存在则插入”?

    我首先通过谷歌搜索找到了这篇文章如何在标准 SQL 中编写 INSERT if NOT EXISTS 查询 http www xaprb com blog 2005 09 25 insert if not exists queries in
  • 如何在 C++ 中验证字符串是否为有效的 IPv4 地址?

    我不需要验证 IP 地址是否可达或类似的内容 我只想验证该字符串是否采用点分四组 xxx xxx xxx xxx IPv4 格式 其中 xxx 介于 0 到 255 之间 您可能想要内特 pton http man7 org linux m
  • 我可以在 AWS Lambda 函数上存储临时文件吗?

    我正在编写一个用于文件提取的 lambda 函数 并且需要在执行此函数时存储文件 因此需要将该文件存储在 aws lambda function 中 是否可以在 lambda 上存储文件 是的 引用自 AWS Lambda 常见问题解答 每
  • Visual Studio 2010 Express。写入输出窗口

    我是 Visual Studio 和 Windows Phone 7 开发新手 我确实激活了重定向所有输出文本选项 但 Debug Writeline 或 Console WriteLine 都不起作用 我如何记录信息 我也花了一段时间才找
  • 分布式任务队列(例如 Celery)与 crontab 脚本

    我无法理解 分布式任务队列 的用途 例如 python 的芹菜库 http www celeryproject org 我知道在 python 框架 celery 中 您可以设置定时窗口来执行函数 然而 这也可以在针对 python 脚本的
  • PostgreSQL 无法打开文件“base/xxxx/xxxxx”没有这样的文件或目录

    最近 我的 Linux 机器上出现了硬件故障 在修复硬件问题并恢复我的 Linux 机器后 当我对其中一个表执行查询时 返回以下错误 ERROR could not open file base 17085 281016 No such f
  • 创建动态分组依据

    df data frame A c 1 4 5 13 2 B c Group 1 Group 3 Group 2 Group 1 Group 2 C c Group 3 Group 2 Group 1 Group 2 Group 3 df
  • GUI 作为有限状态机

    为了实现应用程序的 GUI 我希望将所有逻辑从一种形式集中到另一种形式 该 GUI 管理器将充当有限状态机 虽然我想我在某处见过这种实现 但我找不到与这种解决方案相匹配的设计模式 表单将如下所示 public class Login For
  • 因它能做什么或因为它做了而关闭

    好吧 这是一个有点迂腐的问题 但我想确保我正确理解了这个定义 闭包绰号是用来描述匿名函数的can提升局部作用域中的变量 无论它们实际上是否这样做 或仅当它们do在局部范围内提升变量 换句话说 如果匿名函数具有ability在其本地范围内提升