scala overview
TRANSCRIPT
1
scala ['skeilə]
东白
2
OOPFPDSL
scala?
3
数据的抽象化 (data abstraction)继承 (inheritance)多态 (ploymorphism)
模块化 (module)复用 (reuse)
类型 (type)
OOP?
4
lambda calculuslambda x . plus x x(lambda x . plus x x) y rule:
alpha – 变量替换beta – 值应用
{lisp[ML/erlang/haskell]}function is value[hight order function];no side effect; lazy evaluation;pattern match; currying/partial
funcitons;tail recursion optimization; etc…
FP?
5
definition: Domain-Specific Languages/ 领域特定语言
internal DSL便于用库来提供语言特性easy debugetc…
external DSLeasy design and write [with
parser]new syntax etc…
DSL?
6
not simple?
7
base1. 原生类型是对象的实例
123.toByte"1".toInttrue.toString2. 函数也是值val compare = (x: Int, y: Int) => x > ycompare(1, 2) // result: Boolean = false3. 变量varVal/lazy val 4. 字面量 /literals val i = 1234356; //Int val l = 123454L; // Long val f = 0.123; // Float val c = 'a' or '\u0041'; //Chaar val s = "string" or """ String "ssssss'""" //String val symbol = 'name [scala.Symbol("programming scala") //symbol5.Predef.scala 一切操作都是函数
一切操作都返回值 }=>
8
9
trait
10
companion objects
11
parameterized types
invariant/ 不变 : C[T], C is invariant on T 如果 Tsub 或 Tsup 是 T 的子类或超类, C[Tsub] 或 C[Tsup] 都不是 C[T] 类
covariant/ 协变 : C[+T], C is covariant on T 如果 Tsub 是 T 的子类,则 C[Tsub] 也是 C[T] 的子类
Contravatiant/ 逆变 : C[‐T], C is contravariant on T 如果 Tsup 是 T 的超类,则 C[Tsup] 也是 C[T] 的子类
12
implicit and type bounds
13
function
14
functional data structures
15
pattern match & case class
16
concurrent1.thread2.java.util.concurrent3.event/NIO
4.Actor ==>
<==
17
DSL
18
herding xml in scala
19
ETC…
20
THANKS