基本元素:
关键字: val var lazy val def
if else case return do while for match yield
abstract class
定义: 定义常量 val 懒值 lazy val
声明变量:
变量或者函数的类型写在变量或者函数的后边,并用冒号隔开
数据类型: Byte Char Short Int Long Float Double Boolean
Unit类型
字符串插值(interpolation)Scala 2.10.0 为我们提供了三种字符串插值的方式,分别是 s, f 和 raw。它们都是定义在 StringContext 中的方法
符号和表达式: 符号也是方法
1.to(10) a.方法(b)
1 to 10 a 方法 b
不提供自加或者自减 ++ --
通配符是下划线 _ 下划线表示不同上下文中的不同事物,你通常可以把它看作是一个没有命名的神奇通配符
行末尾不一定需要分号
:: 连接操作符
控制结构 变量生成器 变量<- 表达式
函数 函数与过程 匿名函数 柯里化函数 偏函数
面向对象: 没有静态方法,有单例对象和伴生对象
继承 重载 抽象类 单例对象 实例化对象
特质<Traits> with
模式匹配
样本类
组合方式:
数据:List
Set
Map
Tuple
Option
Combinators: map foreach filter zip partition
find drop foldLeft flatMap
层次结构
可变集合
函数组合:compose andThen
高级类型:类型限制,边界 视图
抽象: 并发编程
和JAVA交互
函数式编程
函数类型:A => B 接收类型为A的参数
返回类型为B的函数
匿名函数:(形参列表) => {函数体}
函数体中返回最后一个表达式
mutation 变化
Immutability
Referential Transparency 引用透明性
函数的参数以及函数体都是透明的
First-class Function
Higher order Function
Closure
表达式求值:严格求值 和非严格求值
call by Value 以及Call by name
call by value 严格求值 对函数的实参求值,且仅求值一次
call by name 非严格求值,函数实参每次在函数体内被用时都会求值,代入表达式
惰性求值 Lazy Evaluation
Recursive Function Tail Recursion
柯里化函数 curried Function 把具有多个参数的函数转化为一条函数链,每个节点是单一参数