gpt4 book ai didi

javascript - 闭包在 Scala 中是如何工作的?

转载 作者:行者123 更新时间:2023-11-29 17:52:27 25 4
gpt4 key购买 nike

我理解闭包是一个函数,其返回值取决于在其外部函数上定义的数据。在 javascript 中,我们可以像这样向内部函数发送参数

    add(x) {
return addplus(y) {
let z = this.x + y ;
return z;
}
}
var op = add(10)(20);

scala 中的闭包是否太像 javascript 闭包?向 Scala 中的内部函数发送参数是否太有效?

最佳答案

闭包是一个捕获定义它的外部范围的函数,因此可以访问在其自身范围之外定义的实体。

闭包的一种可能用途是您所描述的,尽管利用它的技术(如评论中所述)称为柯里化(Currying),即使用n 对函数建模参数作为一个参数,返回一个接受 n 的函数- 1 个参数。

您可以在 Scala 中逐行移植您的 Javascript 代码:

def add(x: Int): Int => Int =
y => x + y

此外,请注意 Scala 原生支持柯里化(Currying):

def add(x: Int)(y: Int): Int =
x + y

这两个在语义上是等价的,通过部分应用它们中的任何一个,你得到一个函数,该函数返回一个求和 x 的函数。到它的参数。也可以完全应用。

val following: Int => Int = add(1)
val two = following(1)
val three = following(two)
val four = add(two)(two)

关于javascript - 闭包在 Scala 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42247553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com