gpt4 book ai didi

scala - Scala 中柯里化(Currying)构造函数的部分应用

转载 作者:行者123 更新时间:2023-12-04 15:34:00 26 4
gpt4 key购买 nike

考虑以下:

class A(foo: Int)(bar: Int)(baz: Int)
object A{
def apply(foo: Int)(bar: Int)(baz: Int) = new A(foo)(bar)(baz)
}

使用 apply 方法,我可以执行以下操作:
scala> A(1)(2)(3)
res12: Script.A = Script$A@7a6229e9

scala> A(1)_
res13: Int => (Int => Script.A) = <function1>

为什么我不能执行以下操作:
scala> new A(1)_
<console>:21: error: missing arguments for constructor A in class A
new A(1)_
^

我错过了一些语法明智的东西吗?我认为构造函数只是类上的方法,因此在需要时应该将它们提升为函数(很像上面的 apply 方法)

最佳答案

调用new在应该创建该类的实例的类上(在你的情况下是 A),但是你试图用 new A(1) _ 做什么就是给承包商做一个没有完整数据的A类的实例,这本质上是完全不合逻辑的。但是写 A(1) _是正确且合乎逻辑的,因为在这种情况下,您将一个方法提升为一个函数(来自 A 伴随对象的 apply 方法),该函数已经拥有创建该类实例的所有数据。

关于scala - Scala 中柯里化(Currying)构造函数的部分应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24426993/

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