我需要使用外部文件从此数组定义复制结果。
scala> val data = Seq(Array(Array(1, 2), Array(3)),Array(Array(1), Array(3, 2), Array(1, 2)),Array(Array(1, 2), Array(5)),Array(Array(6)))
data: Seq[Array[Array[Int]]] = List(Array(Array(1, 2), Array(3)), Array(Array(1), Array(3, 2), Array(1, 2)), Array(Array(1, 2), Array(5)), Array(Array(6)))
我尝试创建一个testdataI.txt文件但无法使其正常工作。
testdataI.txt - >
1,2
3
1
3,2
1,2
1,2
5
6
使用io.Source
进行转换时的结果:
import scala.io.Source
scala> val data = Seq(Source.fromFile("/tmp/testdataI.txt").getLines().map(_.split(",").map(_.trim.toInt)).toArray)
data: Seq[Array[Array[Int]]] = List(Array(Array(1, 2), Array(3), Array(1), Array(3, 2), Array(1, 2), Array(1, 2), Array(5), Array(6)))
结果应如下(一系列多维数组)
data: Seq[Array[Array[Int]]] = List(Array(Array(1, 2), Array(3)), Array(Array(1), Array(3, 2), Array(1, 2)), Array(Array(1, 2), Array(5)), Array(Array(6)))
我发现了很多多维数组信息,但没有针对这种特定情况。
真的很感激,
Fredy A Gomez
答案 0 :(得分:0)
不知道你为什么要这样构建值,但是你可以这样做:
scala> import scala.io.Source
import scala.io.Source
scala> val take = List(2, 3, 2, 1)
take: List[Int] = List(2, 3, 2, 1)
scala> val data = Source.fromFile("/tmp/testdataI.txt").getLines().map(_.split(",").map(_.trim.toInt).toList).toList
data: List[List[Int]] = List(List(1, 2), List(3), List(1), List(3, 2), List(1, 2), List(1, 2), List(5), List(6))
scala> def awesomeGrouped(ungrouped: List[List[Int]], take: List[Int]): List[List[List[Int]]] = take match {
| case Nil => Nil
| case t :: ts => ungrouped.take(t) :: awesomeGrouped(ungrouped.drop(t), ts)
| }
awesomeGrouped: (ungrouped: List[List[Int]], take: List[Int])List[List[List[Int]]]
scala> def fixTypes(grouped: List[List[List[Int]]]) = grouped.map(_.map(_.toArray).toArray)
fixTypes: (sorted: List[List[List[Int]]])List[Array[Array[Int]]]
scala> fixTypes(awesomeGrouped(data, take))
res0: List[Array[Array[Int]]] = List(Array(Array(1, 2), Array(3)), Array(Array(1), Array(3, 2), Array(1, 2)), Array(Array(1, 2), Array(5)), Array(Array(6)))
让每个人感到不安的部分是您选择的take
列表分发;这似乎是武断的。
注意我专门添加了fixTypes
函数以返回所需的确切返回类型。但阵列并不是非常惯用的Scala;你确定你需要它们吗?如果没有,只需删除fixTypes
函数和调用。