【发布时间】:2021-04-03 08:42:45
【问题描述】:
我想在 scala 中创建一个数组缓冲区,而不用一开始就使用数据类型对其进行实例化。我想检查一个条件,然后动态地将类型传递给它。查看给定的代码。
def rowGen(startNumber:Int,tableIdentifier:String,NumRows:Int)={
var tmpArrayBuffer:collection.mutable.ArrayBuffer[_]=null // I tried [T] here. That didn't work either.
tableIdentifier match {
case value if value==baseTable => tmpArrayBuffer= new collection.mutable.ArrayBuffer[(String,String,String,String)]()
case value if value==batchTable => tmpArrayBuffer= new collection.mutable.ArrayBuffer[(String,String)]()
}
for (currentNum <- startNumber to startNumber+NumRows)
tableIdentifier match {
case value if value==baseTable => tmpArrayBuffer+=(s"col1-${currentNum}",s"col2-${currentNum}",s"col3-${currentNum}",s"col4-${currentNum}")
case value if value==batchTable => tmpArrayBuffer+=(s"col1-${currentNum}",s"col2-${currentNum}")
}
tableIdentifier match {
case value if value==baseTable => tmpArrayBuffer.toSeq.toDF("col1","col2","col3","col4")
case value if value==batchTable => tmpArrayBuffer.toSeq.toDF("col1","col2")
}
}
请帮我解决这个问题。根据我想实例化 ArrayBuffer[(String,String)] 或 ArrayBuffer[(String,String,String,String)] 的条件。
【问题讨论】:
标签: scala apache-spark user-defined-functions scala-collections