BOO入门/命名空间

BOO入门 > 命名空间 (上一章:结构 下一章:列举)


定义 定义 命名空间:给予一群类别一个独特的识别名称,以避免与其他不同来源但同名称的类别混淆。

举例来说,如果你有一个 Dog 命名空间和一个 Furniture 命名空间,而它们两者内各有一个 Leg 类别,你可以使用 Dog.Leg 和 Furniture.Leg 来清楚的表示要使用哪一个 Leg。

宣告命名空间 编辑

要宣告命名空间,你只需要将 namespace 放在代码的最前面,并加上一个名字就行了。

// 宣告命名空間
namespace Tutorial

class Thing():
    pass

这样就建立了 Tutorial.Thing。当在命名空间内使用时,很显然就是 Thing。

要宣告一个命名空间里头的命名空间时,就加上 '.',例如:namespace System.Web 。

  建议 在档案的最顶端宣告命名空间,并且使用 PascalCase 来命名。

引入其他命名空间 编辑

要使用其他命名空间的类别时,你得使用 import 关键字。 最常使用到的命名空间是 System ...

// 引入其他命名空間的類別
import System

Console.WriteLine()
// 不引入的話可以這麼寫
System.Console.WriteLine()

这两个例子都一样,但加上 import 的话,会比较简单而清楚。

  建议 不要害怕使用 import,记得别引用到你用不到的命名空间就好。
  建议 当引入时,先引入系统命名空间,例如:System 或 Boo.Lang。然后才是第三方的命名空间。

如果你要引入在其他组件(Assembly)里的命名空间,你可以使用这样的语法:import <target> from <assembly>,举例来说:

// 引入其他組件裡的命名空間

import System.Data from System.Data
import Gtk from "gtk-sharp"

System.Data 是外部函式库 System.Data.dll 的一部分,而 Gtk 则是 Gtk# 函式库里的一部分,这里加上 " 的原因,是因为有 '-',所以加上 " 以避免 Boo 发出错误。

  建议 在你程式只有一个档案的情况下使用 import <target> from <assembly> 的语法。如果你的程式有很多档案时,你应该使用 build 工具,像 NAnt 或 msbuild(xbuild),这会在 使用Boo编译器 里讨论。

练习 编辑

  1. 想想该怎么运用命名空间,再想想如果不使用的话,会发生什么情况?