黑猴子的家:Scala 包/作用域

在Java和Scala中,管理项目可以使用包结构,C和C#使用命名空间。
对于package,有如下几种形式

1、形式体现

package com.nick.impatient.people
class Person{
  val name = "Nick"
  def play(message: String): Unit ={
  }
}

2、等同于

package com.nick.impatient
package people
class Person{
  val name = "Nick" 
  def play(message: String): Unit ={
  }
}

3、等同于

package com.nick.impatient{// com和com.nick的成员在这里不可见
//people包在 com.nick.impatient包里面, 只能对impatient包有访问权限,不能无限递归的访问上一层,包是没有继承关系的
  package people{
    class Person{
      val name = "Nick"
      def play(message: String): Unit ={
      }
    }
  }
}

尖叫提示:位于文件顶部不带花括号的包声明在整个文件范围内有效。
通过以上形式,发出总结:
(1)包也可以像内部类那样嵌套,作用域原则:可以直接向上访问。即,子package中直接访问父package中的内容。(即:作用域)
(2)包对象可以持有函数和变量
(3)引入语句可以引入包、类和对象
(4)源文件的目录和包之间并没有强制的关联关系
(5)可以在同一个.scala文件中,声明多个并列的package
(6)包名可以相对也可以绝对,比如,访问ArrayBuffer的绝对路径是:
_root_.scala.collection.mutable.ArrayBuffer

4、样例理解

package com.aa.bb.cc
package user
class Person{

}
package com.china{
  class Persion{

  }
}

尖叫提示:通过次特性,你发现,把所有代码放在一个文件里面是可以的,但是没有这么做的,不方便维护,看着乱

类能怎么用,包基本上就能怎么用

在Scala 不支持Tab键,请使用4个空格,hive里面也是不支持Tab的,在编辑器里面使用Tab没有问题,但是,你再文本编辑器里面,请使用4个空格

你可能感兴趣的:(黑猴子的家:Scala 包/作用域)