【发布时间】:2016-06-08 01:20:17
【问题描述】:
当我尝试定义一个扩展 Trait 的类时,我在 Scala 中遇到了一个奇怪的类型不匹配错误。我定义了以下特征
trait T {
def f[A,B](x: A): B
}
然后我定义了以下实现这个特征的类
class A() extends T {
def f[Unit,Int](x: Unit) = {
10
}
}
这背后的想法是,我想保证任何具有 T 特征的类都有一个名为“f”的函数,而不管这个函数的形状(即不管它的类型)。
当我尝试执行上述代码时出现问题,我得到以下错误
定义的特征 T :14: 错误:类型不匹配; 找到:scala.Int(10) 必需:整数
所以我不知道我应该如何指定类型以使其工作。我试图将 f 实例化为
def f[Unit,scala.Int(10)](x: Unit) = {
10
}
但是编译器抱怨类型名称不能有'.' . 我错过了什么?
【问题讨论】:
-
当您编写
def f[Unit,Int](x: Unit)时,您声明了一个具有两个类型参数Unit和Int的泛型方法,它们隐藏了同名的内置类型。