
Scala学习之旅
记录自己学习Scala的点点滴滴!
码界一棵葱
这个作者很懒,什么都没留下…
展开
-
Scala中的对象
1、case object和普通object有什么区别 要说case object用于模式匹配,普通object也能被用于模式匹配中,看例子: scala> trait IA defined trait IA scala> val x :IA = A4 x: IA = A4$@939bdb scala> x match{ | case A4 => | } 看上去没原创 2016-08-05 16:56:07 · 247 阅读 · 0 评论 -
Scala 的 yield 例子 (for 循环和 yield 的例子)
原文链接:http://alvinalexander.com/scala/scala-for-loop-yield-examples-yield-tutorial 我看了《Programming in Scala》一书,仍然对 Scala yield 关键字的理解不甚清楚。起初我以为 Scala yield 的与 Ruby 的 yield 是一样,Ruby 中 yield 是被传入代码块翻译 2016-08-11 12:40:36 · 454 阅读 · 0 评论 -
Scala集合(一)
这个章节的内容包含 基本数据结构 ListSetTupleMaps 函数组合器 mapforeachfilterzippartitionfinddrop and dropWhilefoldRight and foldLeftflattenflatMap广义的函数组合器如何处理好Map? 基本数据结构 Scala提供了一些很方便的集合类。 参考 《E原创 2016-08-24 10:17:29 · 338 阅读 · 0 评论 -
Scala集合(二)
Scala提供了一系列的集合类的实现。同时,它对于集合类型也进行了一些抽象。这就使得你可以操作一个集合的Foo对象,而不用去关心这个集合是一个List,Set还是其他的什么。 这个网页提供了一个很好的方式来理解scala里的集合的默认实现,并且都链接到了相应的scaladoc。 基本集合类 常用的集合类型层级关系 集合类的抽象关系集合方法可变性Java 集合类也可直接使用原创 2016-08-24 10:19:20 · 397 阅读 · 0 评论 -
Scala使用Option、Some、None,避免使用null
避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null。在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。但是这对语言设计者来说是一件令人疑惑的选择。为什么要在程序员希望返回一个对象的时候返回一个关键字呢? Scala的Option类型 为了让所有东西都是对象的目标更加一致,也为了遵循函数原创 2016-10-15 11:30:07 · 1173 阅读 · 0 评论 -
Scala implicit
Scala implicit implicit基本含义 在Scala中有一个关键字是implicit, 之前一直不知道这个货是干什么的,今天整理了一下。 我们先来看一个例子: def display(input:String):Unit = println(input) 我们可以看到,display函数的定义只是接受String类型的入参,因此调用display("a原创 2016-07-20 11:00:13 · 278 阅读 · 0 评论 -
Scala中的Implicit(隐式转换,隐式参数,隐式类)
代码如下: /** * 隐式转换 隐式参数 隐式类 */ //隐式转换 class Implicit(a: A) { def Test: Unit = { println("Implicit") } } class A { } object Implicit { //隐式转换 implicit def a2Implicit(a: A) = new Impl原创 2016-08-04 13:25:43 · 292 阅读 · 0 评论 -
IntelliJ IDEA使用SBT构建一个AKKA Scala程序
1、下载安装 IntelliJ IDEA 2、下载安装 Scala 3、在IntelliJ IDEA中安装Scala插件 4、创建工程 5、设置build.sbt 在项目中的build.sbt中追加下图所示的resolvers和libraryDependencies resolvers += "Typesafe Repository" at "http:原创 2016-08-03 11:33:06 · 2883 阅读 · 0 评论 -
Actor模型的原理
先从著名的c10k问题谈起。有一个叫Dan Kegel的人在网上(http://www.kegel.com/c10k.html)提出:现在的硬件应该能够让一台机器支持10000个并发的client。然后他讨论了用不同的方式实现大规模并发服务的技术,归纳起来就是两种方式:一个client一个thread,用blocking I/O;多个clients一个thread,用nonblocking I/O原创 2016-08-03 14:47:53 · 796 阅读 · 0 评论 -
Akka - 热插拔(become和unbecome)
Akka支持在运行时对角色消息循环 (例如它的的实现)进行实时替换: 在角色中调用getContext.become 方法。 热替换的代码被存在一个栈中,可以被pushed(replacing 或 adding 在顶部)和popped。become一个特别好的例子是用它来实现一个有限状态机。使用Become/Unbecome特性还可以很方便的实现状态转换机。 become定义 /**原创 2016-08-04 17:27:45 · 904 阅读 · 0 评论