从语言角度看Scala

不同的计算机语言提供的方式

基本的元素  
组合的手段:      JAVA组合 和继承  
抽象的机制:
    汇编      是对底层机器的轻微抽象
    命令式语言<C>   基于计算机的结构,对汇编的抽象,通过以函数为单元
    面向对象<JAVA>  基于对象
    函数式<Scala>   基于函数和模块

类型系统
    强类型,弱类型   <不同语言是否可以混合使用>
    动态语言,静态语言<从变量声明的角度,类型检查阶段>
        静态语言是在编译期就确定数据对象类型的语言,
            静态显式:类型是语言语法的一部分,该类型的语言要求使用变量必须声明其数据类型
            静态隐式:编译时推导出的,自动进行类型推导
        动态语言:在运行期间才确定数据类型。通过第一次赋值来定义数据类型 R Python ,SQL,Shell

Scala

基本元素:
    关键字:  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  把具有多个参数的函数转化为一条函数链,每个节点是单一参数

blogroll

social