Scala AbstractTypeU?

Scala AbstractTypeU?,scala,types,compiler-construction,Scala,Types,Compiler Construction,什么是Scala的AbstractTypeU 是什么导致Scala编译器这样说: Expression of type Failure[Node] doesn't conform to expected type AbstractTypeU. 更新: 并不是说它回答了这个问题,而是修复结果使用了flatMap,而不是map xmlElem flatMap (xmlObj => try { Success((xmlObj \\ "SOMEELEMENT").head)

什么是Scala的AbstractTypeU

是什么导致Scala编译器这样说:

Expression of type Failure[Node] doesn't conform to expected type AbstractTypeU.
更新: 并不是说它回答了这个问题,而是修复结果使用了flatMap,而不是map

xmlElem flatMap (xmlObj =>
    try {
      Success((xmlObj \\ "SOMEELEMENT").head)
    }
    catch { case e: Exception => Failure(e) }
  )

调用“map”时,Success和Failure语句都出现了错误。

您能显示一些发生此异常的代码吗?使用选项是否更容易:
xmlem flatMap(obj=>(obj\\\“elem”).headOption))
?成功与失败不应该用在你的生活中way@AlexIv是的,很好,这就是它的开始。但是呼叫链需要Try[Elem]。还有一种情况,调用方在传递XML时没有传递所需的元素,从而导致异常。try/catch块将响应放回调用方可以处理的表单中。(他们不希望出现异常,因为所有结果都是链接的,try/catch会破坏功能组合。)
或者以前使用过
,但不像
try[T]
那样是可链接的,因此比try更难处理。在这种情况下,你有什么建议?@AlexIv关于
xmllem flatMap(obj=>Try((obj\\“elem”).head))
?如果你的程序需要尝试,那么坚持它,这不是一个糟糕的设计,但我会尽量避免它,顺便说一句,你可以通过调用toOption来转换Try-to选项,然后继续使用Option。如果您仍然想坚持成功/失败的风格,那么请查看Scalaz验证/NEL,它将为您提供良好的一元链。