20
1 scala ['skeilə] 东东

Scala overview

  • Upload
    dogstar

  • View
    202

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Scala overview

1

scala ['skeilə]

东白

Page 2: Scala overview

2

OOPFPDSL

scala?

Page 3: Scala overview

3

数据的抽象化 (data abstraction)继承 (inheritance)多态 (ploymorphism)

模块化 (module)复用 (reuse)

类型 (type)

OOP?

Page 4: Scala overview

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?

Page 5: Scala overview

5

definition: Domain-Specific Languages/ 领域特定语言

internal DSL便于用库来提供语言特性easy debugetc…

external DSLeasy design and write [with

parser]new syntax etc…

DSL?

Page 6: Scala overview

6

not simple?

Page 7: Scala overview

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 一切操作都是函数

一切操作都返回值 }=>

Page 8: Scala overview

8

Page 9: Scala overview

9

trait

Page 10: Scala overview

10

companion objects

Page 11: Scala overview

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] 的子类

Page 12: Scala overview

12

implicit and type bounds

Page 13: Scala overview

13

function

Page 14: Scala overview

14

functional data structures

Page 15: Scala overview

15

pattern match & case class

Page 16: Scala overview

16

concurrent1.thread2.java.util.concurrent3.event/NIO

4.Actor ==>

<==

Page 17: Scala overview

17

DSL

Page 18: Scala overview

18

herding xml in scala

Page 19: Scala overview

19

ETC…

Page 20: Scala overview

20

THANKS