如何使用List [List [Int]]创建对象并省略其类型

时间:2016-06-12 00:06:55

标签: scala

此代码将使用

创建列表列表
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))
  }
}

1 个答案:

答案 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)
)