为什么此代码无法编译并出现错误:未找到:值矩阵?从文档和一些(可能已过时)代码示例中,这应该有效吗?
object TestMatrix extends App{
type Row = List[Int]
type Matrix = List[Row]
val m = Matrix( Row(1,2,3),
Row(1,2,3),
Row(1,2,3)
)
}
为什么此代码无法编译并出现错误:未找到:值矩阵?从文档和一些(可能已过时)代码示例中,这应该有效吗?
object TestMatrix extends App{
type Row = List[Int]
type Matrix = List[Row]
val m = Matrix( Row(1,2,3),
Row(1,2,3),
Row(1,2,3)
)
}
Matrix
表示一种类型,但您将其用作值。
当你这样做时List(1, 2, 3)
,你实际上是在调用List.apply
,这是List
.
Matrix
要修复编译错误,您可以为and定义自己的工厂Row
:
object TestMatrix extends App{
type Row = List[Int]
def Row(xs: Int*) = List(xs: _*)
type Matrix = List[Row]
def Matrix(xs: Row*) = List(xs: _*)
val m = Matrix( Row(1,2,3),
Row(1,2,3),
Row(1,2,3)
)
}
从这篇文章你有。
还要注意,在包 scala 中,除了大多数类型别名之外,还有一个同名的值别名。例如,List 类有一个类型别名,List 对象有一个值别名。
该问题的解决方案转化为:
object TestMatrix extends App{
type Row = List[Int]
val Row = List
type Matrix = List[Row]
val Matrix = List
val m = Matrix( Row(1,2,3),
Row(1,2,3),
Row(1,2,3))
}