【发布时间】:2016-08-03 06:24:01
【问题描述】:
我试图创建一个与依赖类型_ >: a.type相关的类型别名。
Scala编译器报错,我没看懂:
scala> def foo[A](a: A) = {
| type F = Function1[_ >: a.type, Unit]
| }
<console>:12: error: type mismatch;
found : a.type (with underlying type A)
required: AnyRef
Note that A is unbounded, which means AnyRef is not a known parent.
Such types can participate in value classes, but instances
cannot appear in singleton types or in reference comparisons.
type F = Function1[_ >: a.type, Unit]
^
如果我将a: A 替换为a: A with AnyRef,它会起作用:
scala> def foo[A](a: A with AnyRef) = {
| type F = Function1[_ >: a.type, Unit]
| }
foo: [A](a: A with AnyRef)Unit
为什么? 限制的目的是什么?
【问题讨论】:
标签: scala type-parameter dependent-type existential-type type-bounds