Scala中的map、flatMap

作者:JerryXia | 发表于 , 阅读 (0)
Back to Home Scala中的map、flatMapMarch 26, 2016Scala 中的 map 和 flatMap 在开发中用处很多,功能也十分强大,本文将详细介绍 Scala中 map 和 flatMap 的常见用法以及 map 和 flatMap 的区别。
map在某一个列表(List)调用 map 时,map 可以接受一个函数或者一个表达式为参数,这个函数或者表达式将作用于列表中的每一个元素,最终返回一个新的列表(List)。
scala> val list = List(1,2,3,4,5,6)scala> list.map(_ * 3)res0: List[Int] = List(3, 6, 9, 12, 15, 18)或者
scala> def f(x: Int) = x * 2scala> list.map(x => f(x))res1: List[Int] = List(2, 4, 6, 8, 10, 12)flatMapflatMap 也可以传入一个函数,但是这个函数的返回值类型必须是 List、Seq 或者 Option,否则会出错。
f...阅读全文

如何在 Scala 中利用 ADT 良好地组织业务

作者:JerryXia | 发表于 , 阅读 (0)
Back to Home 如何在 Scala 中利用 ADT 良好地组织业务March 20, 2017在用 Scala 做业务开发的时候,我们大都会用到 case class 以及「模式匹配」,本文将介绍在日常开发中如何利用 case class 模拟 ADT 去良好地组织业务。
ADT(代数数据类型)在计算机编程、特别是函数式编程与类型理论中,ADT 是一种 composite type(组合类型)。例如,一个类型由其它类型组合而成。两个常见的代数类型是 product(积)类型 (比如 tuples 和 records )和sum(和)类型,它也被称为 tagged unions 或 variant type。
这里简单介绍一下常见的两种代数类型 product(积)类型和 sum(和)类型
计数(Counting)在介绍两种常见代数类型之前我们先介绍一下 「计数」 的概念,方面理解后面所要介绍的内容。
为了将某个类型与我们熟悉的数字代数相关联,我们可以计算该类型有多少种取值,例如 Haskell中的Bool 类型:
data Bool = true | false可以...阅读全文

 Akka系列(一):Akka 简介与 Actor 模型 - Scala Cool 

作者:JerryXia | 发表于 , 阅读 (0)
Akka是一个构建在JVM上,基于Actor模型的的并发框架,为构建伸缩性强,有弹性的响应式并发应用提高更好的平台。本文主要是个人对Akka的学习和应用中的一些理解。
Actor模型Akka的核心就是Actor,所以不得不说Actor,Actor模型我通俗的举个例子,假定现实中的两个人,他们只知道对方的地址,他们想要交流,给对方传递信息,但是又没有手机,电话,网络之类的其他途径,所以他们之间只能用信件传递消息,很像现实中的的邮政系统,你要寄一封信,只需根据地址把信投寄到相应的信箱中,具体它是如何帮你处理送达的,你就不需要了解了,你也有可能收到收信人的回复,这相当于消息反馈。上述例子中的信件就相当于Actor中的消息,Actor与Actor之间只能通过消息通信。当然Actor模型比这要复杂的多,这里主要是简洁的阐述一下Actor模型的概念。
Akka中Actors模型对并发模型进行了更高的抽象异步、非阻塞、高性能的事件驱动编程模型轻量级事件处理(1GB内存可容纳百万级别个Actor)为什么Actor模型是一种处理并发问题的解决方案?
一开始我也不怎么理解,脑子里的一贯思维是处理并发...阅读全文

 如何在 Scala 中科学地操作 collection - Scala Cool 

作者:JerryXia | 发表于 , 阅读 (0)
在日常项目开发中,我们几乎都会用到Scala中的集合以及一些集合操作。由于 Scala 中的集合操作灵活多变,对于刚接触Scala的开发者,在选用何种集合以及使用何种集合操作就显得不那么合理了,虽然大部分时候都可以解决问题,但是有时候并没有选择最优的方式。科学合理地操作Scala中的集合可以使我们的代码变得更加简洁和高效。
Mutable 和 Immutable 集合Scala 集合类系统地区分了可变的和不可变的集合。
scala.collection 包中所有的集合类
scala.collection.mutable 中的所有集合类可变集合,顾名思义,意味着你可以修改,移除或者添加一个元素。

scala.collection.immutable 中的所有集合类不可变集合,相比可变集合,不可变集合永远不会被改变,但是你仍然可以像可变集合那样操作(修改,添加,删除某个集合元素)不可变集合,只是这些操作在每一种情况下都是返回一个新的集合,同时,原来的集合不会发生改变,由于此特性,不可变集合也是线程安全的,Scala在默认情况下采用的是不可变集合。所以在使用上,优先使用不可变集合...阅读全文