1.包
Scala包的命名方式有兩種。一種和Java一樣,通過把package子句放在檔案頂端的方式,把整個檔案的內容放進包裡。如:
package scala.actors.Actor
另一種方式可以在package子句之後把要放到包裡的定義用花括弧括起來。如:
package bobsrockets{package navigation{//在bobsrockets.navigation包中class Navigatorpackage tests{//在bobsrockets.navigation.tests包中class NavigatorSuite}}}
另外,Scala在所有使用者可建立的包之外提供了名為_root_的包,即任何你能寫出來的頂層包都被當做是_root_包的成員。如:
//檔案launch.scalapackage launch{class Booster3}//檔案bobsrockets.scalapackage bobsrockets{package navigation{package launch{class Booster1}class MissionControl{val booster1 = new launch.Booster1val booster2 = new bobsrockets.launch.Booster2val booster3 = new _root_.launch.Booster3}package launch{class Booster2}}}
2.引用 Scala的import與Java的import的差異:
可以出現在任何地方;
可以指的是(單利或正統的)對象或包
可以重新命名或隱藏一些被引用的成員
e.g
//只引用linalg中的DenseMatrix和DenseVectorimport breeze.linalg.{DenseMatrix, DenseVector}//將DenseMatrix重新命名為BDMimport breeze.linalg.{DenseMatrix => BDM, DenseVector}//引用linalg中的所有成員import breeze.linalg._//引用linalg中除了DenseMatrix的所有成員import breeze.linalg.{DenseMatrix => _, _}
Scala的import的使用規則:
簡單名x。把x包含進引用名集合;
重新命名子句x => y。讓名為x的成員以名稱y出現;
隱藏子句x => _。把x排除在引用名集合之外;
全包括“_”。引用除了前面子句提到的之外的全體成員。如果存在全包括,那麼必須是引用選擇的最後一個。
另外,“.scala”檔案都隱式的添加了如下引用:
import java.lang._import scala._import Predef._
3.存取修飾詞 Scala和Java修飾符的不同點,如下表:
保護的範圍
Scala裡的存取修飾詞可以通過使用限定詞強調。格式為private[X]或protected[X]的修飾符表達“直到”X的私人或保護,這裡X指代某個所屬的包、類或單例對象。
特例:被private[this]標記的定義僅能在包含了定義的同一個對象中被訪問。
參考文獻:
《Scala編程》