scala – 何时使用Closures
注意:如果您只想跳过上下文,请跳到下面的“问题”
当我在斯卡拉会谈时,我几乎总是肯定会被问到“但是什么时候你会使用关闭?”通常我会说“等待,直到我告诉你一个理解”,然后我展示了如何理解可以使用flatMap / map闭包. 这个例子确实有帮助,但是我很难解释一般的“这是你什么时候认识何时使用闭包”.这是你在功能编程中“习惯”的一件事,你几乎没有思考就可以做到. 通常我在谈论Scala时和Java开发人员交谈,而想到的一个类比是“你知道什么时候创建一个匿名的内部类,需要访问一个上面定义类别的变量,就像一个闭包”.所以我使用事件回调处理作为一个特殊的例子(在这种情况下你不可避免地使用匿名内部类). 考虑到观众(没有经验或FP的经验有限),我不去讨论像Monads这样的术语,这些人通常会寻找与之相关的具体/务实的例子. 题: 解决方法
许多Java开发人员已经熟悉’closures-lite’ – 设计模式,可以模仿封闭类:
>访客 每当Java开发人员达到这些模式之一来解决Scala中的问题时,他们应该将闭包视为轻量级的替代方案. 正如你所提到的,一级关闭在某些方面只是这些模式的逻辑扩展 – 如果我的匿名类只有一个方法,为什么不完全取消这个类,只有方法本身? 也许值得讨论所有这些模式有什么共同点 – 它们都是控制流的一种抽象形式.它们将控制流本身与在此流中的某些点执行的动作分开.任何类似的分离问题都可以从闭包中受益. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |