I was trying to append a Seq[String]
to existing an empty Seq[String]
var enrichmentColumnsList: Seq[String] = Seq.empty
datasetEnricherConf.map(u => u.columnMappingsConf).foreach {
columnMappingConf =>
for (i <- 0 to columnMappingConf.size) {
var cond = columnMappingConf.map(_.destColumnName)
println(s"cond:$cond")
enrichmentColumnsList= cond
}
}
println(s"enrichmentColumnsList:$enrichmentColumnsList")
cond:List(NODE)
cond:List(NODE)
cond:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
cond:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
cond:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
cond:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
cond:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
cond:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
cond:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
cond:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
enrichmentColumnsList:List(NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
It initializes it with the last occurrence of the list.
I was expecting something like below:
enrichmentColumnsList:List(NODE,NODE_temp, NETWORK, SITETYPE, STATEORPROVINCE, DISTRICT, CLUSTER, REGION)
What you want can be achieved in a more functional way (that Scala encourages) using the following code:
val enrichmentColumnsList: Seq[String] =
datasetEnricherConf
// "flatMap" because columnMappingsConf is itself a Sequence/Iterable
.flatMap(_.columnMappingsConf)
// As opposed to here where we can just use "map"
.map(_.destColumnName)
Notice especially that we're not using mutable data (var
) and no loop.