我正在阅读 Delphi XE 中的 RAD Studio 文档,以下是一些文字。
[ Delphi 参考 -> Delphi 语言指南 -> 程序和单元 -> 使用命名空间 -> 搜索命名空间 -> 多单元命名空间 ]
多单元命名空间
如果单元声明引用了相同的命名空间,则多个单元可以属于同一个命名空间。 例如,可以创建两个文件 unit1.pas 和 unit2.pas,拥有以下单元声明:
// in file 'unit1.pas'
unit MyCompany.ProjectX.ProgramY.Unit1
// in file 'unit2.pas'
unit MyCompany.ProjectX.ProgramY.Unit2
在这个例子中,命名空间MyCompany.ProjectX.ProgramY逻辑上包含了unit1.pas和unit2.pas中所有的接口符号。在命名空间中,符号名称必须是唯一的,跨越命名空间中的所有单元。在上面的例子中,如果Unit1和Unit2都定义了一个名为mySymbol的全局接口符号,则会出现错误。
我进行了测试。 下面是代码。
-----------------------------------------------------------------
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Lib.A in 'Lib.A.pas',
Lib.B in 'Lib.B.pas';
begin
WriteLn ( TestValue ) ;
ReadLn ;
end.
-----------------------------------------------------------------
unit Lib.A;
interface
const TestValue : Integer = 10 ;
implementation
end.
-----------------------------------------------------------------
unit Lib.B;
interface
const TestValue : Integer = 10 ;
implementation
end.
这不是错误。为什么?我不明白。
Project1
中仅使用SysUtils,Lib
,并在Lib.B
中执行TestValue:Integer = 20
,然后在Project1
中执行WriteLn(TestValue)
,会发生什么? - Andreas Rejbrand