Why does this code fail to compile with the error: not found: value Matrix? From the documentation and some (possibly out of date) code examples this should work?
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
denotes a type, but you are using it as a value.
When you do List(1, 2, 3)
, you are actually calling List.apply
, which is a factory method for List
.
To fix your compiling error, you can define your own factories for 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)
)
}
From this article you have.
Note also that along with most of the type aliases in package scala comes a value alias of the same name. For instance, there's a type alias for the List class and a value alias for the List object.
A solution to the problem translates to:
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))
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With