使用尝试map,getOrElse并且flatMap:
import scala.util.Try val i = Try("123".toInt) // 成功(123) i.map(_ + 1).getOrElse(321) // 124 val j = Try("abc".toInt) // 失败(java.lang.NumberFormatException) j.map(_ + 1).getOrElse(321) // 321 Try("123".toInt) flatMap { i => Try("234".toInt) .map(_ + i) } // 成功(357)
Try与模式匹配一起使用:
Try(parsePerson("John Doe")) match { case Success(person) => println(person.surname) case Failure(ex) => // 处理错误... }
我实现了以下代码来处理我未来的完成,它编译得很好 我对它的工作原理有点困惑,我假设它确实如此,因为我从Scala文档中的类似示例中复制了它 我知道onComplete需要一个函数,该函数将尝试作为输入,成功和失败都是从尝试扩展而来的case类 我不明白的是,如果不首先进行某种类型的匹配,你怎么能在这些情况下进行。 这怎么可能在这里?
据说比monad更强大,因为它可以累积错误。 有没有什么场合你可能会选择< code>Try而不是< code>scalaz。验证或< code>scalaz。\/?
我是Scala编程新手,我刚刚开始在IntelliJ IDE中使用Scala的基本程序。 当我使用下面的代码时 包装com.allaboutscala.chapter.one.tutorial_04 对象HelloWorld扩展应用程序{println(“Hello from hello world”) } 我想查看应用程序使用main方法的源代码,但当我试图查看源代码并尝试下载时,我遇到了错误,
2. 函数式编程 2.1 Seq[String] 数组或列表 val strSeq=Seq.apply("hello",world) # 省略 apply val intSeq=Seq(1,2) # 长度 intSeq.length intSeq.size # map 函数,遍历 Seq 中的每个元素,然后将元素传给函数。 intSeq.map(x=>x+1) # flatMap 函数,遍历 S
Scala是一门现代的多范式编程语言,旨在以简练、优雅及类型安全的方式来表达常用编程模式。它平滑地集成了面向对象和函数语言的特性。 Scala是面向对象的:Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。 Scala是函数式的
我有一个scala.html页面,它在Play 2.2.1、Scala 2.10.2、Slick 1.0.1、Postgres 9.3应用程序中调用AJAX。 以下同步代码工作正常。它解析请求查询字符串并调用方法 ,该方法对表进行 scala 光滑调用,并根据 对象过滤结果并返回 如果我将方法改为异步运行(见下文),并多次调用listSchools,那么大约20秒后就会抛出这个异常。我怀疑这可能是