当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《将Type构造函数传递给`Any`类型的VarArgs》经验,为你挑选了1个好方法。

鉴于:

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

我的理解是它将需要1个或多个参数Any,然后返回"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"



1> Michael Zaja..:

这不是一个类型构造函数,在这种情况下var args没有什么特别之处.它是的伴侣Option.如果f在类型参数上创建泛型A,则可以看到Option.type(Options伴随对象的类型)是推断的.

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

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

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有