【发布时间】:2017-03-31 08:16:42
【问题描述】:
我正面临“类型不匹配”问题,我尝试了两个多小时甚至没有解决,因为我不擅长 scala。
使用: Scala 2.11.7
错误:
[error] AlertUUU.scala:297: type mismatch;
[error] found : scalaz.Validation StartTimeOverlap.type, OnPeakRange]
[error] required: scalaz.Validation[String,OnPeakRange]
[error] p.onPeakRanges.find(x ⇒ opr.startTime >= x.startTime && opr.startTime <= x.stopTime).map
(_.startTimeOverlap).getOrElse(opr.success)
代码:
def startTimeMustNotOverlap(p: UUUPeriod, opr: OnPeakRange): Validation[String, OnPeakRange] =
p.onPeakRanges.find(x ⇒ opr.startTime >= x.startTime && opr.startTime <= x.stopTime).map(_.startTimeOverlap).getOrElse(opr.success)
case class OnPeakRange(
startTime: Int,
stopTime: Int,
originalThreshold: Int) extends OnPeakRangeT with OnPeakRangeValidations {
def startTimeOverlap = OnPeakRange.StartTimeOverlap.failure
def stopTimeOverlap = OnPeakRange.StopTimeOverlap.failure
def allHoursPeakNotFullDay = OnPeakRange.AllHoursPeakNotFullDay.failure
}
case object StartTimeOverlap extends ValidationKey
trait ValidationKey {
def failNel = this.toString.failureNel
def nel = NonEmptyList(this.toString)
def fail = this.toString.failure
}
【问题讨论】:
-
您能否详细说明您的数据结构?
OnPeakRange和UdmPeriod. -
我都添加了需要字段。
-
更新了我的答案以应对...