亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Scala程序設計—基礎篇

辰方 其它
難度初級
時長 2小時13分
學習人數
綜合評分9.63
93人評價 查看評價
9.8 內容實用
9.6 簡潔易懂
9.5 邏輯清晰
  • object sortDemo {
    ?def qSort(a: List[Int]): List[Int] = {
    ? ?if (a.length < 2) a
    ? ?else qSort(a.filter(a.head > _)) ++
    ? ?a.filter(a.head == _) ++
    ? ?qSort(a.filter(a.head < _))
    ?}

    ?def main(args: Array[String]): Unit = {
    ? ?println(qSort(List(6,4,5,3,1,2,9,8,0)))
    ?}
    }

    查看全部
  • 實現快速排序

    查看全部
  • Map

    定義一個Map: val p = Map(1 -> "David", 9 -> "Bob")

    取出值:p(key), 比如:p(1), p(9)

    判斷key是不是在map中: p.contains(key)

    取出所有key: p.keys

    取出所有值:p.values

    添加一個鍵值: p + (8 -> "Tom")

    刪除一個鍵值: p - 1

    添加多個鍵值對: p ++ List(2-> "Alice", 5 -> "piter")

    減去多個鍵值對: p -- List(1, 9, 2)

    http://img1.sycdn.imooc.com//638e278e000100dc11320571.jpg

    http://img1.sycdn.imooc.com//638e285b0001dfdc12780543.jpg

    http://img1.sycdn.imooc.com//638e289f00014c1511880310.jpg

    查看全部
    0 采集 收起 來源:Scala toupe與map

    2022-12-06

  • Tuple(元組):

    定義2個字段的元組? (1,2) 或? 1 ->2

    訪問元組中的元素: z._1 (z元組的第一分量)


    Map[K,V]:

    定義Map?? val? p = Map(1? ->? "David",9 ? ->"Lili")

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Map(1 -> David, 9 -> Lili)?

    p(1)?????? David?? 取p Map 的值

    p.contains(1)?? 判斷key在不在? p Map中

    p.keys?? 取所有key

    p.values? 取所有value

    p + ( k -> v)? 添加值

    p -? k??? 刪除值

    p? ++ List(k -> v ,k -> v)? 添加多個值

    p? --? List(k,k)? 減去多個值

    查看全部
    0 采集 收起 來源:Scala toupe與map

    2022-12-06

  • Stream 惰性求值

    http://img1.sycdn.imooc.com//638e23ad0001b53c09300399.jpg

    查看全部
    0 采集 收起 來源:Scala Rang與Stream

    2022-12-06

  • Range(整數序列):

    生成Range

    1 to 10???? Range(1,2,3,4,5,6,7,8,9,10)

    1 to 10? by 2??? Range(1,3,5,7,9)

    1 until 10? Range(1,2,3,4,5,6,7,8,9)

    Stream(惰性求值列表):

    列表的第一個值確定,其他值在使用時才會計算

    1? #::? 2 #:: 3 #::? Stream.empty ? ? ? ? ? ? ?? Stream(1,? ?)

    val? stream = (1? to? 1000000).toStream???? Stream(1, ?)

    .head? 第一個值

    .tail???? 第一個值后面的所有值

    查看全部
    0 采集 收起 來源:Scala Rang與Stream

    2022-12-06

  • 集合的歸約:

    reduceLeft(匿名函數):將集合中的元素,按匿名函數的規則進行處理,處理的結果的類型和集合元素的類型一致

    reduceLeft(op:? (T,T)? => T)

    foldLeft(初始值)(匿名函數):將集合中的元素與初始值,按匿名函數的規則進行處理,處理的結果類型與初始值類型一致。

    foldLeft(z? : U)(op: (U,? T) =>U)

    查看全部
  • List高階函數:

    map:根據函數規則對List中的每個參數做映射

    c.map(x=>x.toUpperCase) 等價于 c.map( _.toUpperCase? )

    與filter不同:filter的規則是Boolean類型的

    flatMap:將多層的List打平

    http://img1.sycdn.imooc.com//638e1ffb0001f81709010483.jpg

    http://img1.sycdn.imooc.com//638e20490001729d08520478.jpg

    查看全部
    0 采集 收起 來源:Scala list-map

    2022-12-06

  • List的高階函數:

    filter(判斷函數):遍歷集合,保留符合判斷函數的元素

    toList:將字符串變成List[Char]集合

    takeWhile(判斷函數):遍歷集合,根據判斷函數截取集合元素

    http://img1.sycdn.imooc.com//638e1dda00012c4b10160477.jpg

    查看全部
  • //for
    for?{
    ????x?<-?xs
    ????y=?x+1
    ????if(y>0)
    }yield?y
    
    //if
    if?(exp)?valA?else?valB

    查看全部
  • 函數 代碼塊

    def?function(?param:?ParamType):?ReturenType={
    ????//body
    }


    查看全部
  • 三種變量修飾符
    val?定義常量,不可修改
    var?定義變量
    lazy?val?只要第一次使用到時候,才會運算表達式得到值
    可以不顯示指定變量的類型,因為Scala會自動進行類型推導

    Unit類型: 類似Java的Void, 一般作為函數返回值

    有Unit一般是副作用,因為函數沒返回值


    異常值: ()Nothiong


    String
    - 構建于Java的String之上
    - 新增了字符串插值(interpolation)的特性

    ```scala
    val?myname?=?"lizhy"?\\?creating?a?String
    s"My?name?is?${myname}"?\\?String?interpolation
    ```

    在scala語言中,所有的事物都是對象

    查看全部
    0 采集 收起 來源:Scala數據類型

    2022-04-02

  • 在計算機科學領域,函數式編程是一種編程范式,它是一種構建計算機程序結構的方法和風格,它把程序當做數學函數的求值過程并且避免了改變狀態和可變的數據。
    二、函數式編程的重要概念:
    2.1 純函數(Pure Function),或函數的純粹性(Purity),沒有副作用(Side Effect)。
    副作用是狀態的變化(mutation):例子:修改全局變量,拋出異常,IO讀寫,調用有副作用的函數。

    2.2 引用透明(Referential Transparency):對于相同的輸入,總是得到相同的輸出。
    如果f(x)的參數x和函數體都是引用透明的,那么函數f是純函數。

    2.3 不變性(Immutability)為了獲得引用透明性,任何值都不能變化。
    2.4 函數是一等公民(First-class Function):一切都是計算,函數式編程中只有表達式,變量、函數都是表達式。
    三、高階函數(Higher order Function)
    閉包(Closure)
    表達式求值策略:嚴格求值非嚴格求值 ?Call By Value ?vs. ?Call By Name
    惰性求值(Lazy Evaluation):定義表達式不會立即求值,用到后才會求值。
    遞歸函數,函數式編程沒有循環,循環由遞歸實現。調優遞歸:尾遞歸。

    查看全部
  • Scalable編程語言。
    純正的面向對象語言。
    函數式語言
    構建于jvm之上,能互相直接調用,無縫和java互操作。

    JAVA和SCALA互相直接調用!

    查看全部
    0 采集 收起 來源:課程介紹

    2022-04-01

  • http://img1.sycdn.imooc.com//606187dd0001074407710427.jpg

    查看全部
  • http://img1.sycdn.imooc.com//606187dd0001074407710427.jpg

    快排

    查看全部
  • http://img1.sycdn.imooc.com//606187dd0001074407710427.jpg

    快排

    查看全部

  • http://img1.sycdn.imooc.com//6061372c0001621a08050686.jpg

    查看全部
  • 柯里化

    http://img1.sycdn.imooc.com//605ab0d10001bdfa05490244.jpg

    http://img1.sycdn.imooc.com//605ab10600016ed304500216.jpg

    查看全部
    0 采集 收起 來源:Scala 柯里化

    2021-03-24

  • 高階函數

    http://img1.sycdn.imooc.com//605aa6e60001939e05760304.jpg

    查看全部
  • 列子2

    http://img1.sycdn.imooc.com//605aa63d0001bec104740332.jpg

    返回1

    bar(1,loop)? ? 先1進行計算,返回1,方法體沒用到loop 不被調用

    bar(loop,1)一直循環? ? ? ? ?先loop進行計算,無法返回

    查看全部
    0 采集 收起 來源:求值策略

    2021-03-24

  • 例子

    http://img1.sycdn.imooc.com//605aa553000134b205840315.jpg

    查看全部
    0 采集 收起 來源:求值策略

    2021-03-24

  • 求值策略

    http://img1.sycdn.imooc.com//605a9da9000101cb05270286.jpg

    查看全部
    0 采集 收起 來源:求值策略

    2021-03-24

  • match = java 的switch


    http://img1.sycdn.imooc.com//605a9cca00019f8904330324.jpg

    查看全部
首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
本課程是Scala的基礎教程,雖然對學員的基礎不做要求,但是學員最好有一門編程語言的經驗,這樣會更容易理解課程里的一些概念。
老師告訴你能學到什么?
1、函數式編程的基本概念 2、Scala的開發環境 3、高階函數 4、表達式求值策略 5、Scala Immutable Collection簡介

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!