首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala-在使用Try、成功和失败进行错误处理时声明变量?

Scala-在使用Try、成功和失败进行错误处理时声明变量?
EN

Stack Overflow用户
提问于 2017-12-25 08:14:43
回答 1查看 382关注 0票数 0

我的问题的背景如下:

我正在尝试对一些数据应用线性回归模型,但如果数据没有以所需的格式显示,该模型将抛出异常错误。如果成功,我希望将输出的残差保存为新变量,但如果失败,则希望定义一个由零组成的数组作为新变量。

我的问题是我不能根据函数的成功或失败来声明这个变量。

更具体地说,该模型的调用方式如下:

代码语言:javascript
复制
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

代码语言:javascript
复制
model.newSampleData(y,badData)

但这会产生正常的行为

代码语言:javascript
复制
model.newSampleData(y,goodData)

如果有异常错误,那么我想声明变量val params=Array.fill(2)(0.0),但是如果没有异常错误,那么我想声明变量val params=model.estimateResiduals()

我的尝试(使用TrySuccessFailure)是:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-25 08:41:26

您声明的变量是块的局部变量。使用

代码语言:javascript
复制
val params = Try{model.newSampleData(y,badData)} match {
  case Success(_) => model.estimateResiduals()
  case Failure(_) => Array.fill(2)(0.0)
}

或者只是

代码语言:javascript
复制
val params = Try(model.newSampleData(y,badData))
  .map(_ => model.estimateResiduals())
  .getOrElse(Array.fill(2)(0.0))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47964837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档