作用:管理大型程序中的名称
1 package com {
2 package hansight {
3 package scala {
4 object EventType extends Enumeration {
5 type EventType = Value
6 val DDOS, DI = Value
7 }
8 }
9 }
10 }
作用域规则:
相对包名:
可能导入混乱,
使用绝对包名:var arr = root.scala.collection.mutable.ArrayBuffer[EventType]
1 package com {
2 package hansight {
3 package scala {
4 object EventType extends Enumeration {
5 type EventType = Value
6 val DDOS, DI = Value
7 }
8 }
9 }
10 }
1 package com.hansight.scala { // com 和 com.hansight包在这里不可见
2 object EventType extends Enumeration {
3 type EventType = Value
4 val DDOS, DI = Value
5 }
6 }
1 package com.hansight // 此包中的内容是可见的
2 package scala
3 object EventType extends Enumeration {
4 type EventType = Value
5 val DDOS, DI = Value
6 }
等同于
1 package com.hansight { // 此包中的内容是可见的
2 package scala {
3 object EventType extends Enumeration {
4 type EventType = Value
5 val DDOS, DI = Value
6 }
7 }
8 }
用于组织工具函数和常量
需要在父包中定义:
1 package com.hansight
2 package object people {
3 val defaultName = "scala examples"
4 }
5 package people {
6 class Person {
7 var name = defaultName
8 }
9 }
类成员在包中的可见度
1 package com.hansight
2 package object people {
3 val defaultName = "scala examples"
4 }
5 package people {
6 class Person {
7 var name = defaultName
8 private[people] def description = "people name:" + name; // people包内可见
9 }
10 }
也可以延伸到上级:
private[hansight] def description = "people name:" + name;
import语句让你使用更短的名称,而非完整名称。
引入某个包的全部成员:
import com.hansight.utils. // 和Java中的通配符一样,为什么用_?因为可以作为包名
引入类或包的全部成员:
import com.hansihgt.utils.ESUtils._ // 就像Java中的import static,scala推荐使用
引入了包,便可使用较短名称访问子包:
import java.awt._
def handler(env: event.ActionHandler){ //TODO...} //event是java.awt的子包
在任何地方都可以使用import:
类里面
方法里面
引入包中多个成员
import java.awt.{Color, Font}
引入类并重命名
import java.util.{HashMap => JavaHashMap} import scala.collection.mutable._
隐藏某个引入的类
import java.util.{HashMap => , } // 引入java.util下的所有成员,但HashMap不引入
import java.lang._
import scala._ // 会覆盖java.lang中的引入
import Predef._ // 包含一些工具函数,在scala有包对象之前已经存在的遗留