此代码将使用
创建列表列表val matrix = Matrix(List(List(1, 2), List(3, 4)))
class Matrix(matrixParameters: List[List[Int]])
object Matrix {
def apply(matrixParameters: List[List[Int]]) {
new Matrix(matrixParameters)
}
}
但是我想省略List[List[Int]]
的使用,只是使用类似的东西:
val matrix = Matrix(1,2; 3,4)
这可以在Scala中实现吗?
最近我得到的是使用这个不太优雅的代码从String创建列表列表:
val matrixFromString = MatrixFromString("1,2; 3,4")
object MatrixFromString {
def apply(matrixParameters: String) {
val l1 = matrixParameters.split(";")(0).split(",").map { x => Integer.valueOf(x).toInt }.toList;
val l2 = matrixParameters.split(";")(1).split(",").map { x => Integer.valueOf(x).toInt }.toList;
new Matrix(List(l1, l2))
}
}
答案 0 :(得分:2)
不完全是你想要的,但是有非常温和的变化......
class Matrix(matrixParameters: List[List[Int]])
object Matrix {
def apply( rows : Seq[Int]* ) = new Matrix( rows.map( _.toList ).toList )
}
现在你可以写
了val matrix = Matrix(
1 :: 2 :: Nil,
3 :: 4 :: Nil
)
您可以定义您正在使用的包的包对象,类型别名
type Row = Seq[Int]
val Row = Seq
然后
val matrix = Matrix(
Row(1, 2),
Row(3, 4)
)