加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 何时使用Closures

发布时间:2020-12-16 09:18:56 所属栏目:安全 来源:网络整理
导读:注意:如果您只想跳过上下文,请跳到下面的“问题” 当我在斯卡拉会谈时,我几乎总是肯定会被问到“但是什么时候你会使用关闭?”通常我会说“等待,直到我告诉你一个理解”,然后我展示了如何理解可以使用flatMap / map闭包. 这个例子确实有帮助,但是我很难解释
注意:如果您只想跳过上下文,请跳到下面的“问题”

当我在斯卡拉会谈时,我几乎总是肯定会被问到“但是什么时候你会使用关闭?”通常我会说“等待,直到我告诉你一个理解”,然后我展示了如何理解可以使用flatMap / map闭包.

这个例子确实有帮助,但是我很难解释一般的“这是你什么时候认识何时使用闭包”.这是你在功能编程中“习惯”的一件事,你几乎没有思考就可以做到.

通常我在谈论Scala时和Java开发人员交谈,而想到的一个类比是“你知道什么时候创建一个匿名的内部类,需要访问一个上面定义类别的变量,就像一个闭包”.所以我使用事件回调处理作为一个特殊的例子(在这种情况下你不可避免地使用匿名内部类).

考虑到观众(没有经验或FP的经验有限),我不去讨论像Monads这样的术语,这些人通常会寻找与之相关的具体/务实的例子.

题:
任何人都有自己的方式成功解释封闭,真正打入Java(或其他OO语言)开发人员的家园?

解决方法

许多Java开发人员已经熟悉’closures-lite’ – 设计模式,可以模仿封闭类:

>访客
>命令
>策略
> functor(参见Google Guice的集合处理许多例子)
>回调/监听器(大型的Swing)

每当Java开发人员达到这些模式之一来解决Scala中的问题时,他们应该将闭包视为轻量级的替代方案.

正如你所提到的,一级关闭在某些方面只是这些模式的逻辑扩展 – 如果我的匿名类只有一个方法,为什么不完全取消这个类,只有方法本身?

也许值得讨论所有这些模式有什么共同点 – 它们都是控制流的一种抽象形式.它们将控制流本身与在此流中的某些点执行的动作分开.任何类似的分离问题都可以从闭包中受益.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读