Scala 如何根据新值更新选项[a]中的变量

Scala 如何根据新值更新选项[a]中的变量,scala,Scala,很抱歉,这似乎是一个Scala新手的问题,但假设我有一个变量“minVal”,它是一个类中的选项[Int]。如果我得到一个更大的新观察值,我需要更新这个变量。实际上,我还有很多其他变量——例如,maxVal、minDates、maxDates、minLength、maxLength等等。下面只是一个小片段。所以除了选项[Int],我还有选项[Date],选项[String],它们有类似的更新要求 我想知道是否有更好的方法来计算一分钟 var minVal:Option[Int] = None d

很抱歉,这似乎是一个Scala新手的问题,但假设我有一个变量“minVal”,它是一个类中的选项[Int]。如果我得到一个更大的新观察值,我需要更新这个变量。实际上,我还有很多其他变量——例如,maxVal、minDates、maxDates、minLength、maxLength等等。下面只是一个小片段。所以除了选项[Int],我还有选项[Date],选项[String],它们有类似的更新要求

我想知道是否有更好的方法来计算一分钟

var minVal:Option[Int] = None
def registerObs(x: Option[Int]) = {
  if (x.isDefined) 
    minVal match {
      case None                   => minVal = x
      case Some(mv) if mv < x.get => minVal = x
      case _ => 
    } 
}
var minVal:Option[Int]=None
def注册表对象(x:选项[Int])={
如果(x.isDefined)
明瓦尔匹配{
case None=>minVal=x
如果mvminVal=x,则为某些情况(mv)
案例=>
} 
}

提前谢谢

也许是这样的?
minVal=(minVal++x).reduceOption(min)

此外,对于不同的类型,不应该需要不同的函数。像这样的东西应该足够了:

def minOpt[A](x: Option[A], y: Option[A])(implicit o: Ordering[A]) =
   (x ++ y).reduceOption { o.min(_,_) }
然后:

minVal = minOpt(minVal, x)
minDate = minOpt(minDate, d)
minString = minOpt(minString, s)

也许是这样的?
minVal=(minVal++x).reduceOption(min)

此外,对于不同的类型,不应该需要不同的函数。像这样的东西应该足够了:

def minOpt[A](x: Option[A], y: Option[A])(implicit o: Ordering[A]) =
   (x ++ y).reduceOption { o.min(_,_) }
然后:

minVal = minOpt(minVal, x)
minDate = minOpt(minDate, d)
minString = minOpt(minString, s)
让我们说,相当多的“非功能性”(副作用,易变性,…)同意——不幸的是,非功能性,但我需要记录不同的事件。每个事件类型一个类实例似乎是一个很好的方法。很少有这样的方法可以推荐。让我们说,相当多的“非功能性”(副作用,易变性,…)同意-遗憾的是,非功能性,但我需要记录不同的事件。每个事件类型一个类实例似乎是一个很好的方法。很少有情况可以推荐这种方法。