推断类型参数 [_$1] 不符合方法类型参数范围
Inferred type arguments [_$1] do not conform to method type parameter bounds
我有一个案例class :
case class AnomalyCheckConfigBuilder[S <: State[S]](anomalyDetectionStrategy: AnomalyDetectionStrategy,
analyzer: Analyzer[S, Metric[Double]],
anomalyCheckConfig: Option[AnomalyCheckConfig] = None)
而且我有一个函数,它 returns 上述案例的集合 class Seq 形式的对象。
val anomalyCheckConfig : Seq[AnomalyCheckConfigBuilder[_]] = jobConfig.validate.get.getAnomalyCheckConfigBuilder
我正在将上面列表中的对象添加到签名如下的另一个方法中:
def addAnomalyCheck[S <: State[S]](
anomalyDetectionStrategy: AnomalyDetectionStrategy,
analyzer: Analyzer[S, Metric[Double]],
anomalyCheckConfig: Option[AnomalyCheckConfig] = None)
: this.type
我正在进行以下操作:
anomalyCheckConfig.foreach(x=>{
verificationSuite = verificationSuite.addAnomalyCheck(x.anomalyDetectionStrategy,x.analyzer,x.anomalyCheckConfig)
})
其中 verificationSuite 是来自 Deeque
的开源代码
我在上面的代码中遇到的错误是:
error: inferred type arguments [_] do not conform to method addAnomalyCheck's type parameter bounds [S <: com.amazon.deequ.analyzers.State[S]]
[ERROR] verificationSuite = verificationSuite.addAnomalyCheck(x.anomalyDetectionStrategy,x.analyzer,x.anomalyCheckConfig)
error: type mismatch;
[ERROR] found : com.amazon.deequ.analyzers.Analyzer[_,com.amazon.deequ.metrics.Metric[Double]]
[ERROR] required: com.amazon.deequ.analyzers.Analyzer[S,com.amazon.deequ.metrics.Metric[Double]]
[ERROR] verificationSuite = verificationSuite.addAnomalyCheck(x.anomalyDetectionStrategy,x.analyzer,x.anomalyCheckConfig)
代码在编译时失败,scala 无法理解状态,我无法理解 _
来自哪里。将不胜感激对此的一些意见
这清楚地表明 Scala 需要您提供 'S'
的实例,它是 State
class.
的子类型
您需要做的是:
anomalyCheckConfig.foreach(x=>{
verificationSuite = verificationSuite.addAnomalyCheck[S](x.anomalyDetectionStrategy, x.analyzer.asInstanceOf[Analyzer[S, Metric[Double]]], x.anomalyCheckConfig)
})
您还需要将其包装在接受 S
作为 State
子类型的函数下
def anmomaly[S <: State[S]](){
anomalyCheckConfig.foreach(x=>{
verificationSuite = verificationSuite.addAnomalyCheck[S](x.anomalyDetectionStrategy, x.analyzer.asInstanceOf[Analyzer[S, Metric[Double]]], x.anomalyCheckConfig)
})
}
我有一个案例class :
case class AnomalyCheckConfigBuilder[S <: State[S]](anomalyDetectionStrategy: AnomalyDetectionStrategy,
analyzer: Analyzer[S, Metric[Double]],
anomalyCheckConfig: Option[AnomalyCheckConfig] = None)
而且我有一个函数,它 returns 上述案例的集合 class Seq 形式的对象。
val anomalyCheckConfig : Seq[AnomalyCheckConfigBuilder[_]] = jobConfig.validate.get.getAnomalyCheckConfigBuilder
我正在将上面列表中的对象添加到签名如下的另一个方法中:
def addAnomalyCheck[S <: State[S]](
anomalyDetectionStrategy: AnomalyDetectionStrategy,
analyzer: Analyzer[S, Metric[Double]],
anomalyCheckConfig: Option[AnomalyCheckConfig] = None)
: this.type
我正在进行以下操作:
anomalyCheckConfig.foreach(x=>{
verificationSuite = verificationSuite.addAnomalyCheck(x.anomalyDetectionStrategy,x.analyzer,x.anomalyCheckConfig)
})
其中 verificationSuite 是来自 Deeque
的开源代码我在上面的代码中遇到的错误是:
error: inferred type arguments [_] do not conform to method addAnomalyCheck's type parameter bounds [S <: com.amazon.deequ.analyzers.State[S]]
[ERROR] verificationSuite = verificationSuite.addAnomalyCheck(x.anomalyDetectionStrategy,x.analyzer,x.anomalyCheckConfig)
error: type mismatch;
[ERROR] found : com.amazon.deequ.analyzers.Analyzer[_,com.amazon.deequ.metrics.Metric[Double]]
[ERROR] required: com.amazon.deequ.analyzers.Analyzer[S,com.amazon.deequ.metrics.Metric[Double]]
[ERROR] verificationSuite = verificationSuite.addAnomalyCheck(x.anomalyDetectionStrategy,x.analyzer,x.anomalyCheckConfig)
代码在编译时失败,scala 无法理解状态,我无法理解 _
来自哪里。将不胜感激对此的一些意见
这清楚地表明 Scala 需要您提供 'S'
的实例,它是 State
class.
您需要做的是:
anomalyCheckConfig.foreach(x=>{
verificationSuite = verificationSuite.addAnomalyCheck[S](x.anomalyDetectionStrategy, x.analyzer.asInstanceOf[Analyzer[S, Metric[Double]]], x.anomalyCheckConfig)
})
您还需要将其包装在接受 S
作为 State
def anmomaly[S <: State[S]](){
anomalyCheckConfig.foreach(x=>{
verificationSuite = verificationSuite.addAnomalyCheck[S](x.anomalyDetectionStrategy, x.analyzer.asInstanceOf[Analyzer[S, Metric[Double]]], x.anomalyCheckConfig)
})
}