我正在尝试使用fold方法丰富scala.util.Try
类型。我有以下隐含的做法:
implicit class FoldableTry[T](tryable: Try[T]) {
def fold[X](failure: Throwable => X)(success: T => X): X = {
tryable match {
case Success(result) => success(result)
case Failure(ex) => failure(ex)
}
}
}
当我使用 -Xstrict-inference 编译器选项运行 sbt compile 时,出现以下错误:
type mismatch;
[error] found : result.type (with underlying type T)
[error] required: T
[error] case Success(result) => success(result)
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
如何修复此错误?如果我删除了编译器标志,它就会编译。
答案 0 :(得分:2)
看起来你正在遇到bug (SI-6680)。我建议不要使用-Xstrict-inference,因为它听起来很实验 - 请注意Paul Phillip的评论:
-Xstrict-inference只是作为一个粗糙的hacky开始,但它恰好与我的离开。我预计它会出现实施问题。