scala學習--可擴展的語言

     從名稱可知“可擴展的語言”說明scala確實有它的強大之處-可擴展性,故scala應用範圍很廣,從簡單的腳本到構建大型系統。

  scala增加的新類型

       引入 BigInt類型(從scala.BigInt引入,其實它的來源是java的BigInteger)如下面的例子

        def factorial(x:BigInt):BigInt= if(x==0) 1 else x*factorial(x-1)        調用時直接factorial(20)。

  scala增加了新的控制結構

       引入新的控制結構-actor--併發編程結構,actor是能夠實現線程模型上的併發抽象,可以通過彼此間傳遞消息來實現通信,actor可以執行兩種基本操作

       消息的發送和接受。發送操作,用驚歎號表示,可以把消息發給actor.如下舉例

        recipient !msg

        發送是異步的,每個actor都有信箱(mailbox)把進入的消息排成隊列,actor通過receive代碼塊處理信箱中收到的消息

        receive{

              case Msg1=>..........相應的處理1

              case Msg2=>.............相應的處理2

         }

        當信箱中有符合case 消息時將會相應的匹配並處理。

        在這裏再舉一個scala的actor實現校驗和(cheksum)計算器服務的簡單例子:

        actor {

             var sum=0

             loop{

                       receive{

                                  case Data(bytes)   =>sum+=hash(bytes)

                                  case GetSum(requester)  =>requester ! sum

                                 }

                      }


             }

          這個actor首先定義一個名爲sum的本地變量,並賦初值0,然後就等待在消息循環中,不斷的用receive段接受消息,匹配處理

           其中requester!sum把當前sum值發回給requester.requester字段嵌入在GetSum消息裏,它通常指向創建請求的actor.


    是什麼讓scala有擴展性呢?

       其實很簡單它是結合面向對象和函數式編程的特點,這些在後面的學習中會體現出它的特點。

    scala又是高級的

        val nameHasUpperCase=name.exists.(_.isUpperCase)  其中_是站位符,代碼看起來

    scala是靜態類型的

        什麼是靜態類型系統呢?其含義是你可以根據保存和計算的值的類型認定變量和表達式。如若感覺抽象可以參考http://blog.csdn.net/mycoolx/article/details/6082187

     這一小節就簡單介紹一下scala的一些特性,具體內容見下章節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章