0508.Java 開發者請留步!

如果你不是 Java 開發者, 你大可跳過這頁內容的學習, Java 的舊習也不應帶給 Scala 形成負擔. - WisdomFish.ORG

YouTube Video




Scala 賦值的結果是 Unit( )


A = B = C 在 Java 是可行的, 但 Scala 因 Unit( )

scala> var a, b, c = 2
a: Int = 2
b: Int = 2
c: Int = 2

scala> a = b = c
<console>:8: error: type mismatch;
 found   : Unit
 required: Int
       a = b = c
             ^




Scala 中的  == / eq


在 Java 中 == 用來判別二個物件是否參考至同一位址實例身份或者二個基本類型的值, 用 equals( ) 來判別二個物件實例的內容值; Scala 則不論類型為何, == 都用以值的比較. 由 scala.Any API 中的 ==() 並宣告為 final 來得到整個Scala體系對 == 的一致性保證, 無法被改寫. 想改寫必須以 equals( ) 來重載, Scala 使用 eq( ) 來比較二個物件的參考相等.

更多 ...



分號 ; 原則上可被忽略


Scala 省略 ; 在語句未尾可以讓 code 看起來更簡潔, Scala compiler 會協助推論幫你處理它. 
但若相表達多數語句於一行之中時, 就必須顯式補上分號 ;, 來讓 compiler 能分辨區隔語句的切割, 但要避免這方式造成降低可讀性的困境. 

scala> val x = 22 ; val y = "a"
x: Int = 22
y: java.lang.String = a



預設存取修飾子



  • 在不顯式宣告存取權限時, Java 預設為 package 層級內可見, 而 Scala 則為 public


Scala’s Protected




細粒度存取控制與巢狀套件



巢狀套件(nested packages)




避免顯式 return






References






Comments