Scala开发教程(58): 包对象

jerry Scala 2015年11月25日 收藏

到目前为止,我们看到的添加到包的都是类型,Trait和单例对象(Object)。这些都是指包的定级层次定义的类型。Scala的定级层次除了可以定义类,Trait,Object之外,其它可以在类,Trait,Object内部定义的类型,也都可以直接定义在包中,比如一些通用的函数,变量,你都可以直接定义在包中。
在Scala中,可以把这些函数或方法放在一个称为“包对象”中。每个包只有一个包对象,任何放在包对象的类型都可以认为是包自身的成员。
例如:

  1. //in file bobsdelights/package.scala
  2.  
  3. package object bobsdelights{
  4. def showFruit(fruit: Fruit){
  5. import fruit._
  6. println(name + "s are " + color)
  7. }
  8. }
  9.  
  10. //in file PrintMenu.scala
  11.  
  12. package printmenu
  13. import bobsdelights.Fruits
  14. import bobsdelights.showFruit
  15.  
  16. object PrintMenu{
  17. def main(args:Array[String]){
  18. for(fruit <- Fruits.menu){
  19. showFruit(fruit)
  20. }
  21. }
  22. }

中对象PrintMenu可以引入包对象中定义的函数showFruit,方法和引入一个类定义一样,也是通过import 语句。
包对象通常被编译为package.class,其包名为定义的包。所有按照惯例一般包对象定义放在package.scala中,比如上面的包对象可以放在bobsdelights目录下的package.scala中。