天天看點

scala 學習筆記八 簡潔性

    Scala可以簡潔地表示概念,有時甚至可以說過于簡潔。

    1、消除中間結果

    在組合表達式中,最後一個表達式會變成整個表達式的結果。下面的例子中,值會被捕獲到val result中,然後result從方法中傳回。

    

scala 學習筆記八 簡潔性

    與将值放到中間結果中不同,推導自身可以産生結果:

scala 學習筆記八 簡潔性

    2、删除不必要的花括号

    如果一個方法由單個表達式構成,那麼環繞方法的花括号就是不是必須的

scala 學習筆記八 簡潔性

    注意,之是以可以這樣做是因為消除了中間結果,進而形成了單個表達式。

    注意上的187和188 行是兩個條件表達式,在推導内部的每個表達式都置于獨立的行中。

    3、移除不必要的參數

scala 學習筆記八 簡潔性

    上面的第271行的匿名函數已經實作了某種程度的簡潔性,:在參數清單中隻有一個參數,是以無需圓括号,并在函數中隻有一個函數,是以無需花括号。

    第274行用了Scala特殊的下劃線字元。到目前為止,隻知道将下劃線當作通配符使用的情況,但是當它成為方法調用的一部分時,下劃線表示“填補這個空白”,而scala無需具名參數就可以為其傳遞每個字元。

    第277行,由于隻有一個參數要傳遞給print,而且scala看到print将接受一個char,是以scala允許采用極端簡介的形式,将方法名作為參數傳遞給foreach,而且根本沒有參數清單。

    4、為傳回類型使用類型推斷

scala 學習筆記八 簡潔性

    上面第275行就使用了Scala的類型推斷,進而移除了傳回類型。但是參數清單和方法體之間的=還是必須的。

    5、用類型為名字起别名

    在使用别人的代碼時,可能會發現他們選擇的名字太長或者太難用了,Scala允許使用type關鍵字對現有名稱起一個新名字作為别名:

scala 學習筆記八 簡潔性

    6、程式設計風格

scala 學習筆記八 簡潔性

    沒有參數的方法可以在定義中省略圓括号,例如上面的127行。

    注意在調用中,盡管getA在定義時是帶圓括号的,但是在調用時,帶不帶圓括号均可。但是,因為getB的定義是不帶圓括号的,是以在調用它時,隻能不帶圓括号。