[英]Scala-Declaring variables when using Try,Success and Failure for error handling?
我的问题的背景如下:
我正在尝试将线性回归模型应用于某些数据,但是如果未按要求的格式显示数据,则该模型将引发Exception错误。 如果成功,那么我想将输出的残差另存为新变量,但是如果失败,那么我想将零数组定义为新变量。
我的问题是我无法根据函数的成功或失败来声明此变量。
更具体地说,该模型的调用如下:
import org.apache.commons.math3.stat.regression.OLSMultipleLinearRegression
import org.apache.commons.math3.stat.regression.AbstractMultipleLinearRegression
import scala.util.{Try,Success,Failure}
val model=new OLSMultipleLinearRegression()
val goodData=Array(Array(.1),Array(.2))
val badData=Array(Array(.1,.1),Array(.2,.2))
val y=Array(.5,.6)
以下产生异常错误MathIllegalArgumentException
model.newSampleData(y,badData)
但这产生了正常的行为
model.newSampleData(y,goodData)
如果存在异常错误,那么我想声明变量val params=Array.fill(2)(0.0)
但是如果没有异常错误,那么我想声明变量val params=model.estimateResiduals()
。
我的尝试(使用Try
, Success
和Failure
)是:
Try{model.newSampleData(y,badData)} match {
case Success(_)=>val params=model.estimateResiduals()
case Failure(_)=>val params=Array.fill(2)(0.0)
}
但是当我输入params
时,出现error: not found: value params
。
给定线性回归方法的成功或失败,如何声明变量params
?
您声明的变量是该块的局部变量。 采用
val params = Try{model.newSampleData(y,badData)} match {
case Success(_) => model.estimateResiduals()
case Failure(_) => Array.fill(2)(0.0)
}
要不就
val params = Try(model.newSampleData(y,badData))
.map(_ => model.estimateResiduals())
.getOrElse(Array.fill(2)(0.0))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.