内容简介:翻译自:https://stackoverflow.com/questions/25588387/scala-util-try-how-to-get-throwable-value-pattern-matching
以下REPL片段假定:
import scala.util.{Try, Success, Failure}
为什么这两个语句不能通过编译?我得到“构造函数无法实例化为期望的类型”:
Failure(new Exception("a")) match {
case Success(i) => "a"; case Failure(e) => "b"; case _ => "c"; }
Success(123) match {
case Success(i) => "a"; case Failure(e) => "b"; case _ => "c"; }
我可以通过Try with get或toOption获得成功价值.是否有相应的方法来获取失败的Throwable值或Option [Throwable]?
编辑:从失败/成功投射尝试工作
Failure(new Exception("a")).asInstanceOf[Try[Int]] match {
case Success(i) => "a"; case Failure(e) => "b"; case _ => "c"; }
Success(123).asInstanceOf[Try[Int]] match {
case Success(i) => "a"; case Failure(e) => "b"; case _ => "c"; }
第一个代码段无法编译,因为Success不是Failure的子类型.编译器认为你很傻,因为Success(i)情况永远不会匹配.
举一个更简单的例子,这也不能编译.
Failure(new Exception()) match { case Success(_) => }
出于同样的原因,这也不是这样.
42 match { case Success(_) => }
你所编写的内容几乎可以正常工作,但你匹配的值必须有一个更通用的Try [_]类型(无论如何,如果模式匹配实际上是在一些有用的上下文中使用的话).
(Failure(new Exception("a")): Try[_]) match {
case Success(i) => "a"; case Failure(e) => "b"; case _ => "c"; }
翻译自:https://stackoverflow.com/questions/25588387/scala-util-try-how-to-get-throwable-value-pattern-matching
以上所述就是小编给大家介绍的《scala.util.Try:如何获得Throwable值?模式匹配?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大数据系统构建
Nathan Marz、James Warren / 马延辉、向磊、魏东琦 / 机械工业出版社 / 2017-1 / 79.00
随着社交网络、网络分析和智能型电子商务的兴起,传统的数据库系统显然已无法满足海量数据的管理需求。 作为一种新的处理模式,大数据系统应运而生,它使用多台机器并行工作,能够对海量数据进行存储、处理、分析,进而帮助用户从中提取对优化流程、实现高增长率的有用信息,做更为精准有效的决策。 但不可忽略的是,它也引入了大多数开发者并不熟悉的、困扰传统架构的复杂性问题。 本书将教你充分利用集群硬件优势的La......一起来看看 《大数据系统构建》 这本书的介绍吧!