Scala 入门 => 进阶

Continuous Updating...

第一部分,入门

  1. 变量声明:var,val,lazy val

    • var声明可变变量;val声明不可变变量。推荐使用val。
    • lazy val惰性赋值:在变量调用时执行赋值,赋值后值不可变。
    • 编译器自动推断类型,无需显示指明变量类型。
  2. 函数定义:val,def

    • val定义函数变量。
    • 无需显示return,默认最后一行为返回结果
  3. 字符串

    • "hello world"
    • 保存字符串格式
      """ {
      attr1: hello,
      attr2: world
      } """
  4. 控制结构: if else, for, while, try ... catch

    • 没有?:,只有if else

    • if else有返回值

    • for
      for {
      i ← list
      if(i % 2 == 0)
      } println(i)

    • try ... catch
      try {
      ...
      } catch {
      case e1: Exception =>
      case e2: Exception =>
      }

  5. 模式匹配:match...case

    • 表达式,有返回值;
    • 匹配上即跳出,全部未匹配throw error
    • 搭配case class
    • class C(arg: Int)
    • class C(var arg: Int)
    • class C(val arg: Int)
    • class C(private val arg: Int)
    • abstract class
      使用val声明的变量不能通过=重新赋值
  6. object

    • 单例
    • 伴生对象
      • 对象的构建
  7. 样本类:case class

    • 自带apply,unapply
    • sealed武装
    • 搭配模式匹配
  8. trait

    • 功能更强大的接口
      特质相较与接口和抽象类功能更为强大,而且特质可以保证抽象的粒度更小一下。当明确了继承关系时使用抽象类,但只是抽象某一特性时要使用特质。
  9. 集合

    • List
      • head,tail
      • Nil
      • 提取:val List(head, tail) = List(1, 2, 3)
    • Seq
    • Map
    • Array
    • Set
  10. 集合操作

    • map
    • foreach
    • flatMap
    • fold
    • reduce
    • filter
  11. 数据结构

    • Option

      • say good-bye to null
      • 支持集合操作
    • Tuple

      • (t1, t2), t1 -> t2
      • Map(t1 -> t2)
      • 两元素集合
    • Either

      • 左error,右result
  12. Template String

    • s"${hello}, ${firstName + lastName}"
  13. import

    • 位置:文件头,文件中,方法中
    • 全部引用 import package._,单个引用import package.c1
  14. App特质

    • 启动程序
  15. 重复参数

    • def fn(i: Int*)
    • fn(1, 2, 3)
    • fn(1, 2, 3:_*)

二,进阶

  1. 并发集合

    • List(1, 2, 3, 4).par
  2. 懒集合、视图

    • Stream
      • 递归数据结构
      • 延迟计算
      • 拿多少给多少
    • View
      • 延迟计算
      • 合并复杂计算
  3. map/reduce/fold/flatMap

    • 假设我们有一筐苹果,fold操作就好像是我们要把这个框子中的苹果打成果酱,我们从框中把苹果一个一个取出来扔到机器中,最后得到了一滩果酱;
    • map操作就好像我们要给每个苹果套一个包装袋,每套完一个扔到另外的框中,最后得到了一筐带包装的苹果。
  4. Actor
    - message-driven
    - stateful
    - 最小并发单元

  5. promise和future

  6. 第一等函数

    • 闭包

      • 函数字面量在运行时创建的函数值称为闭包。
      • 自由变量,绑定变量。
        其实就是根据上下文对自由变量赋值的过程。
    • 偏应用

      • 偏函数只对其定义域的一部分做处理。
      • 对于一个函数,只提供其部分(或者不)参数,就构成一个偏应用函数。
      • 偏应用函数是函数
    • 赋值/传递

      • 函数可以随意用来赋值和传递
    • 高阶函数

      • def f2(f: ()=>Unit) { f() }
    • 匿名函数

      • f2(() => println("hello")) //匿名函数
  1. 尾递归
    - 递归不再可怕
    尾递归和递归不一样的是,Scala编译器检测到尾递归就用新值更新函数参数,然后把它替换成一个回到函数开头的跳转。相当与一次新的函数调用。

  2. 柯里化

    • 柯里化是把多参函数转化为单个参数逐一调用的方式。
  3. 类型参数

  4. 型变

  5. 抽取器

  6. 依赖注入

  7. trait

三,进阶

  1. 隐式转换

  2. 类型系统

  3. 类型类

  4. duck type

  5. type lambada

  6. TypeTag

  7. Functor,Monad

  8. Combinator parsers

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容