没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Scala
课堂
!
关于
Scala 课堂是 Twitter 启动的一系列讲座,用来帮助有经验的工程师成为高效的 Scala 程序员。Scala
是一种相对较新的语言,但借鉴了许多熟悉的概念。因此,课程中的讲座假设听众知道这些概念,并
展示了如何在 Scala 中使用它们。我们发现这是一个让新工程师能够快速上手的有效方法。网站里的
是伴随这些讲座的书面材料,这些文字材料本身也是很有用的。
方法
我们认为最有意义的教学方式是,不要把 Scala 看做是改进的 Java,而是把它作为一门新的语言。
所以这里不会介绍 Java 的使用经验,而将聚焦在解释器和“对象-函数式”的风格,以及我们的编程
风格。特别强调了可维护性,清晰的表达,和利用类型系统的优势。
大部分课程除了 Scala 的交互命令行之外不需要其他软件。我们鼓励读者按顺序学习,并且不仅限于
此。让这些课程作为您探索 Scala 的起点吧!
另外
通过这些链接您可以了解更多:
Effective Scala Twitter 的 Scala 最佳实践。对理解 Twitter 的代码风格非常有用。
Scala 官网文档 包含教程,手册,API 参考,书籍等...
Scala API 文档
课程
基础
值,函数,类,方法,继承,try-catch-finally。面向表达式编程
基础知识(续)
样本类,对象,包,应用,更新,函数即对象(统一访问原则),模式匹配。
集合
列表,映射,功能组合(map, foreach, filter, zip, folds)
模式匹配与函数组合
更多函数!偏函数,更多模式匹配
类型和多态基础
基本类型和类型多态性,类型推断,变性,边界,量化
高级类型
高级类型,视界,更高级多态性类型,递归类型,结构类型
简单构建工具
关于 SBT——标准的 Scala 构建工具
更多的集合
Scala Collections 库指南
使用 specs 测试
Scala 并发编程
Runnable, Callable, 线程, Futures
Java + Scala
Java 跨平台交互:在 Java 中使用 Scala
Finagle 介绍
Finagle 原语:Future, Service, Filter, Builder
Searchbird
利用 Finagle 构建一个分布式搜索引擎
基础
课程内容:
关于这节课
表达式
值
函数
类
继承
特质
类型
关于这节课
最初的几个星期将涵盖基本语法和概念,然后我们将通过更多的练习展开这些内容。
有一些例子是以解释器交互的形式给出的,另一些则是以源文件的形式给出的。
安装一个解释器,可以使探索问题空间变得更容易。
为什么选择
Scala?
表达能力
函数是一等公民
闭包
简洁
类型推断
函数创建的文法支持
Java 互操作性
可重用 Java 库
可重用 Java 工具
没有性能惩罚
Scala
如何工作
?
编译成 Java 字节码
可在任何标准 JVM 上运行
甚至是一些不规范的 JVM 上,如 Dalvik
Scala 编译器是 Java 编译器的作者写的
用
Scala
思考
Scala 不仅仅是更好的 Java。你应该用全新的头脑来学习它,你会从这些课程中认识到这一点的。
启动解释器
使用自带的 sbt console 启动。
$ sbt console
[...]
Welcome to Scala version 2.8.0.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_20).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
表达式
scala> 1 + 1
res0: Int = 2
res0是解释器自动创建的变量名称,用来指代表达式的计算结果。它是 Int 类型,值为2。
Scala 中(几乎)一切都是表达式。
值
你可以给一个表达式的结果起个名字赋成一个不变量(val)。
scala> val two = 1 + 1
two: Int = 2
你不能改变这个不变量的值.
变量
如果你需要修改这个名称和结果的绑定,可以选择使用
var
。
scala> var name = "steve"
name: java.lang.String = steve
scala> name = "marius"
name: java.lang.String = marius
函数
你可以使用 def 创建函数.
scala> def addOne(m: Int): Int = m + 1
addOne: (m: Int)Int
在 Scala 中,你需要为函数参数指定类型签名。
scala> val three = addOne(2)
three: Int = 3
如果函数不带参数,你可以不写括号。
scala> def three() = 1 + 2
three: ()Int
scala> three()
res2: Int = 3
scala> three
res3: Int = 3
匿名函数
你可以创建匿名函数。
scala> (x: Int) => x + 1
res2: (Int) => Int = <function1>
这个函数为名为 x 的 Int 变量加1。
scala> res2(1)
res3: Int = 2
你可以传递匿名函数,或将其保存成不变量。
scala> val addOne = (x: Int) => x + 1
addOne: (Int) => Int = <function1>
scala> addOne(1)
res4: Int = 2
如果你的函数有很多表达式,可以使用{}来格式化代码,使之易读。
def timesTwo(i: Int): Int = {
println("hello world")
i * 2
}
对匿名函数也是这样的。
scala> { i: Int =>
println("hello world")
i * 2
剩余156页未读,继续阅读
资源评论
- 千与2015-03-18适合快速入门学习Scala,讲的不是很细,具体更详细内容还要看其他书籍。
EricLee228
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功