Scala包和引用


1.包

Scala包的命名方式有兩種。一種和Java一樣,通過把package子句放在文件頂端的方式,把整個文件的內容放進包里。如:

package scala.actors.Actor 

另一種方式可以在package子句之后把要放到包里的定義用花括號括起來。如:

package bobsrockets{  
    package navigation{  
        //在bobsrockets.navigation包中  
        class Navigator  
        package tests{  
            //在bobsrockets.navigation.tests包中  
            class NavigatorSuite  
        }  
    }  
}  

另外,Scala在所有用戶可創建的包之外提供了名為_root_的包,即任何你能寫出來的頂層包都被當做是_root_包的成員。如:

//文件launch.scala  
package launch{  
    class Booster3  
}  
//文件bobsrockets.scala  
package bobsrockets{  
    package navigation{  
        package launch{  
            class Booster1  
        }  
        class MissionControl{  
            val booster1 = new launch.Booster1  
            val booster2 = new bobsrockets.launch.Booster2  
            val booster3 = new _root_.launch.Booster3  
        }  
        package launch{  
            class Booster2  
        }  
    }  
}  

  

2.引用

Scala的import與Java的import的差異:
 可以出現在任何地方;
 可以指的是(單利或正統的)對象或包
 可以重命名或隱藏一些被引用的成員
e.g

//只引用linalg中的DenseMatrix和DenseVector  
import breeze.linalg.{DenseMatrix, DenseVector}  
//將DenseMatrix重命名為BDM  
import 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編程》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM