环境搭建
在SBT的项目中使用scala
console:在平时学习、表达式时,不方便调用的大型的intellij,如果直接使用scala,不能调用前期下载的库。这是可以使用
sbt
console
** 使用SBT构建Scala应用** >$ sbt ~compile
以上命令意味着, 我更改了任何源代码并且保存之后,将直接触发SBT编译相应的源代码以及相应的依赖变更。 假如我们有2个显示器, 左边是命令行窗口,右边是编辑器或者IDE窗口,那么,我们只要在右边的显示器中编辑源代码,左边的显示器就可以实时的反馈编译结果, 这将极大加快开发的迭代速度, 听起来并且看起来是不是很cool?!
** Scala入门之工具篇**
** scala sbt 代理设置**
** sbt下载加速器**
添加以下代码到你的文件中,这样可能会带来莫名的错误!! Enable the SBT plugin by adding
addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.1")
to ~/.sbt/0.13/plugins/build.sbt (enables it globally), or to the project/plugins.sbt file of an SBT project. Tested with SBT 0.13.8 / 0.13.9 / 0.13.11 / 0.13.12 / 0.13.13 / 0.13.15 / 0.13.16-M1 / 1.0.1-M5.
**sbt官方文档 **
> 持续构建和测试 为了加快编辑-编译-测试循环,你可以让 sbt 在你保存源文件时自动重新编译或者跑测试。 在命令前面加上前缀 ~ 后,每当有一个或多个源文件发生变化时就会自动运行该命令。例如,在交互模式下尝试: > ~ compile 按回车键停止监视变化。 你可以在交互模式或者批处理模式下使用 ~ 前缀。 参见 触发执行 获取详细信息。
** How could I convert a pom xml to sbt dependencies?**
转换 pom.xml文件到 build.sbt文件。 - Place this code into a file called PomToSbt.scala next to pom.xml - Type scala PomtoSbt.scala > build.sbt - The dependencies from pom.xml will be extracted and placed into a complete build.sbt file.
学习例子
Scala 设计理念,作者亲自写的,翻译了成中文。适合有基础的人宏观上了解scala。
类和对象(Classes and Objects)
基本类型和操作(Basic Types and Operations)
函数式对象()
内建控制结构()
函数和包
类型参数化
-Scala中的函数式特性-来自王宏江:非常建议通读一下全文:里面讲了对高阶函数的抽象,函数柯里化的作用。下面这种语句可以经常看到,但是在搜索时不好找的,在这篇文章里能很好解释:
类型的协变、逆变
函数和闭包
控制抽象
组合与继承
- Introduction to Algebraic Types in Scala:18页的PPT,简单明了
Scala的层级
特质
包和引用
断言和单元测试
样本类和模式匹配
使用列表
Scala容器类体系结构
-
[ Scala容器类体系结构 ]http://docs.scala-lang.org/zh-cn/overviews/core/architecture-of-scala-collections.html 中级难度,对于理解隐形参数、容器的设计都有帮助。
集合类型
有状态的对象
类型参数化
Scala中有一个概念,叫做“视界”。所谓“视界”是指,我不care这个对象具体是什么类型,但我可以把它“视作”某种类型加以利用。
抽象成员
隐式转换和参数
-
Demystifying Implicits and Typeclasses in Scala:> implicit conversions. If you define a one argument method with the implicit modifier, Scala uses that as a way to convert arguments of the input type to the output type in calls when this method is in scope.
-
ImplicitDesignPatternsinScala:lihaoyi新加坡人,scala.js的推动者,可能是新加坡李家的皇族。
Implicits-resolution
实现列表
Scala容器类体系结构
- Scala容器类体系结构 这篇文章适合中级,对于理解容器、隐形参数都有帮助。
For表达式
抽取器
注解
使用XML
使用对象的模块化编程
对象相等性
Scala和Java的结合
actor和并发
####Future 和 Promise:很多文章在讲future和promise时,只讲使用,没有将关键的性质,当一个future开始运行时,是在另一个线程空间内,因此就有回调之说。
def apply[T](body: =>T)(implicit executor: ExecutionContext): scala.concurrent.Future[T]
Yup. You got me there. The method also accepts something called an ExecutionContext as an implicit argument. When a block of code is used to construct a Future, the computation runs on an ExecutionContext. The ExecutionContext is synonymous with a ThreadPool and when a Future is started, it runs on a separate Thread.
Analyzing functions returning Future[T]: Not all rely on the Future.
Create actor区别 与 Scala lazy declaration,Akka Actor Props factory:生成Actor有多种方法,为什么官方推荐使用Actoof(classOf[myActor])
连接符解析
Gui编程
奇淫异巧
- 浅谈 Scala 中下划线的用途
- scala的cons(::)和(:::)连接符和对List元素的操作
- scala的List容器里++和:::运算符有什么不同?:简单的说,两个算符(其实是函数)的效果是一模一样的。:::是 List 专有的函数,后来Scala 的 collection API 重新设计,加入了++函数,++定义在 trait TraversableLike 中,更加通用,但是 List 中已经存在的:::是不能删除的,要保留兼容性。
关于Mondad
其他资源:
-
褪去Scala的糖衣:对Scala初学后,可以学习这个系列的博文。
-
utils4s(http://jacksu.github.io/utils4s)
-
a071800的专栏 (http://http://blog.csdn.net/a071800/article/details/47279951) 里面比较零碎,有比较少见的文法、句法。可以浏览看下。
-
What is the rationale behind having companion objects in Scala?(https://stackoverflow.com/questions/609744/what-is-the-rationale-behind-having-companion-objects-in-scala)输入链接说明
-
Scala泛函编程实践之路:博文里面有,泛函程序学习,Scalaz库学习。
-
tpolecat comments about scala : Returning the "Current" Type in Scala
应用实践
茶余饭后
-
Scala的设计目标:
-Scala这门语言最早是如何被设计出来的? -Scala的设计目标——Martin Odersky访谈(二)