繁体   English   中英

使用Try,Success和Failure进行错误处理时,Scala声明变量吗?

[英]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()

我的尝试(使用TrySuccessFailure )是:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM