zoukankan      html  css  js  c++  java
  • 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编程》

  • 相关阅读:
    经典入门_排序
    经典入门_贪心算法
    经典入门_Hash的应用
    经典入门_排序
    uva 839
    uva 327
    uva 699
    uva 712
    uva 297
    uva 548
  • 原文地址:https://www.cnblogs.com/GatsbyNewton/p/4816009.html
Copyright © 2011-2022 走看看