美文网首页
Scala 包和引入

Scala 包和引入

作者: wangdy12 | 来源:发表于2017-10-02 14:18 被阅读0次

    有两种方法来声明包,并把代码放入其中

    • 类似Java的方式
    • 类似名称空间的个方式,包名后加大括号,可以进行嵌套,灵活的进行省略

    任何顶层包都被当做_root_包的成员,当包名称冲突时,可以从最外层指定包名

    package bobsrockets.navigation
    class Navigator
    
    package bobsrockets.navigation {
      class Navigator
    }
    
    //将文件的不同部分放在不同的包中
    package bobsrockets {
      package navigation {
        // In package bobsrockets.navigation
        class Navigator
        package tests {
          // In package bobsrockets.navigation.tests
          class NavigatorSuite
        }
      }
    }
    
    //避免花括号导致代码右移的写法
    package bobsrockets 
    package navigation 
    class Navigator
    

    当访问同一个包中的代码时,可以使用简短的非限定名称,省略部分前缀

    引入包

    import scala.collection._   //引入collection中的所有成员
    import scala.collection.Vector 
    import scala.collection.{Vector, Sequence}  //选择性导入一个或多个
    import scala.collection.{Vector => Vec28}   //重命名导入
    import java.util.{Date => _, _} //导入java.util包里除Date之外的所有文件
    

    隐式引入

    import java.lang._
    import scala._//包含Scala的标准库,例如List
    import Predef._//Predef对象包含类型定义,方法,隐式转换等
    

    Scala中引入可以出现在任何地方,不必出现在文件的开始

    def showFruit(fruit: Fruit) = {
      import fruit._
      println(name + "s are " + color)
    }
    

    访问修饰符

    总体和Java类似,有一些不同

    • private:只能在class或者trait内部可见,外部类不能不能访问内部类的私有成员
    • protected:子类可见,同一个包中的其他类不可见(Java中对同一个包内的类也是可见的)
    • public:没有标识privateprotected的都是public

    private[X]protected[X]:限定访问是私有的或者受保护的,直到X作用域以内

    private[this]:对象私有,object-private,只有对象自己在类内部可以访问,其他相同的实例对象都不能访问

    伴生对象:只有一个实例,实现static的功能,拥有对应类的所有访问权限

    包对象

    添加了关键字object,作用域是整个包,添加一些帮助方法,类型别名,隐式转换等

    package object bobsdelights {
      def showFruit(fruit: Fruit) = {
        import fruit._
        println(name + "s are " + color)
      }
    }
    

    相关文章

      网友评论

          本文标题:Scala 包和引入

          本文链接:https://www.haomeiwen.com/subject/ozqtextx.html