Scala學習筆記(一)

Scala學習筆記

1 val聲明常量,var聲明變量,使用val時相當于java的final修飾符是不可變的。

2 class中的內容都是非靜態(tài)的,而object中的都是靜態(tài)的,可以靜態(tài)調用。在class中是無法定義main方法。

3 方法聲明采用def 方法名(參數:參數類型, ...) : 返回類型 = {} 的形式:

  • 多個參數使用,分隔,無參數時參數列表以及括號可以省略;
  • 無返回值時返回類型可以省略,大括號直接跟在參數列表后;
  • 有返回值時必須在后面加上

4 scala采用類型推斷(type inference),編譯器會通過上下文推斷類型信息。

5 在scala中函數和方法是兩個不同的概念,函數可以作為句柄的一部分而方法不行。

6 若無return語句,最后一個有值的語句的值會作為返回值。

7 for循環(huán)語句:

for(i <- 1 to 10)
for(i <- 0 util myArray.length)
for(value <- myArray)

8 擴展類可以使用extends關鍵字,但是一個class只能擴展一個類;

9 特征/特質trait, 類似于java的interface,使用with關鍵字來使用特質,一個類可以with多個trait,這點與java一致。區(qū)別在于,類可以不一定實現trait,但是要在類名上加上abstract修飾符。

10 extendswith的關系:extends后的語句是一體的:

class MyClass extends AnyRef with T1 with T2 with T3

這個類聲明實際上應該是

class MyClass extends (AnyRef with T1 with T2 with T3)

因此一個類要“使用”某個trait,必須首先擴展一個類,默認為AnyRef,再使用擴展的類去間接使用trait

11 模式匹配,可以使用switch,但更常用的是match關鍵字:

x match {
  case 1 => "one"
  case "two" => 2
  case y: Int => "Scala.Int"
  case _ => "many"
  }

_表示其它值

12 異常處理,使用try catch finally三級異常處理機制,使用throw拋出異常:

try {
    //Did something
    } catch {
      case e : Exception => //handle exception
      } finally {
        throw new RuntimeException("balabala")
        }

19 類型的上下界:

  • U >: T:下界, U必須是T的本身或者父類;
  • S <: T:上界, S必須是T的本身或者子類;

20 Unit類型是一種值類型, 僅用來表明方法的返回類型,Unit代表一個表達式單元,可以是語句也可以是具體值。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、變量 獲取變量的值是一個耗時的工作時,可以考慮使用lazy var. lazy val forLater = ...
    小程故事多閱讀 808評論 2 1
  • 1. Scala有多cool “Put productivity & creativity back in th...
    時待吾閱讀 266評論 0 0
  • 這篇講義只講scala的簡單使用,目的是使各位新來的同事能夠首先看懂程序,因為 scala 有的語法對于之前使用習...
    MrRobot閱讀 3,044評論 0 10
  • 文章轉至點擊進入原文章最近剛碰到個好機會去用scala,所以從本章開始記錄scala的學習筆記,更多是實驗就形式來...
    天天吃好閱讀 939評論 0 13
  • 睡覺前突然肚子很餓,怎么辦,只好餅干充饑。但其實心中“罪惡”感爆棚,脂肪啊,牙齒啊,對不住了啊! 大家都說,這是一...
    unico閱讀 332評論 0 0

友情鏈接更多精彩內容