gpt4 book ai didi

scala - 将类型构造函数传递给 `Any` 类型的 Var Args

转载 作者:行者123 更新时间:2023-12-02 08:23:25 25 4
gpt4 key购买 nike

给定:

scala> def f(x: Any*): String = "Foo"
f: (x: Any*)String

我的理解是它会接受任何 Any 的 1 个或多个参数,然后返回 "Foo"

scala> f(1, 2, List(4), "foo")
res5: String = Foo

scala> f(null)
res6: String = Foo

但是,然后我传入了一个更高级的类型:

scala> f(Option)
res7: String = Foo

...但我预计编译时会失败,因为编辑 - 我认为它是一个类型构造函数。

为什么 f(Option) 起作用,即输出 "Foo"

最佳答案

这不是类型构造函数,在这种情况下,var args 没有什么特别之处。它是 Option 的伴随对象。如果您使 f 泛型化于类型参数 A,您可以看到 Option.type(Option 的类型>s companion object) 被推断出来。

scala> def f[A](a: A) = a
f: [A](a: A)A

scala> f(Option)
res1: Option.type = scala.Option$@59f95c5d

关于scala - 将类型构造函数传递给 `Any` 类型的 Var Args,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620406/

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