这不是一个非常重要的观点,我知道,但我想知道我是否可以保存两行代码。
我有一个数据集inputData,我想分成两部分。我正在使用数据集类的randomSplit方法。但是,我被迫使用三行代码来执行此操作:
val (training, test) = inputData.randomSplit(Array[Double](0.7, 0.3), 18)
理想情况下,我想做类似
的事情Error:(146, 13) constructor cannot be instantiated to expected type;
found : (T1, T2)
required: Array[org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]]
但是由于错误而导致此代码无法编译:
[RequireClaim("ClaimType",Value = "RequiredValue")]
public IActionResult Action(){}
有可能实现我想要的目标吗?
答案 0 :(得分:2)
模式匹配数组:
val Array(training, test) = inputData.randomSplit(Array[Double](0.7, 0.3), 18)
或更长(但仍为单一表达)
val (training, test) = inputData.randomSplit(Array[Double](0.7, 0.3), 18) match {
case Array(training, test) => (training, test)
}
请记住,编译器无法对其进行验证,并且在MatchError
运行时可能会失败。