为什么这个代码失败,错误编译:未发现:价值矩阵? 从文档和一些(可能是过时的)代码示例这应该工作?
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
和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)
)
}
从这个文章你。
另请注意,大多数在包斯卡拉类型别名走来同名的值别名。 例如,有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))
}