今天我碰巧用Delphi 7编译了一个类定义像这样的代码
type TAudioStream = class helper of TStream;
而且,令我惊讶的是,编译器吐了
“系统单元过期或损坏:缺少‘TClassHelperBase’”。
看起来 Delphi7 已经对这个helper
词有一些保留的用法。
Delphi 在 Delphi 8 中引入了 Helper 类。它们旨在将 VCL 绑定到 .Net。那么,Delphi7 有先见之明吗?
今天我碰巧用Delphi 7编译了一个类定义像这样的代码
type TAudioStream = class helper of TStream;
而且,令我惊讶的是,编译器吐了
“系统单元过期或损坏:缺少‘TClassHelperBase’”。
看起来 Delphi7 已经对这个helper
词有一些保留的用法。
Delphi 在 Delphi 8 中引入了 Helper 类。它们旨在将 VCL 绑定到 .Net。那么,Delphi7 有先见之明吗?
我不确定这是否是一个真正的问题。为将来的实施保留关键字是一种常见的做法。Delphi 8 的路线图和计划的功能应该在 Delphi 7 的发布日期指定。所以是的,我认为 Delphi 7 在这种情况下是有先见之明的。
语言设计者保留某些词以供将来使用是很常见的。class
和interface
,例如,在 JavaScript 中一直是保留字……什么,十年了……尽管预计它们不会再使用几年。goto
是 Java 中的保留字,尽管它从未被期望使用。
编译器编写者实现功能以备将来使用也很常见。例如,泛型已经在 Sun 的 Java 1.2javac
编译器中实现,尽管它们直到 Java 5 才被添加到语言规范中。
请记住,Delphi 7 包含“.Net 预览编译器”。Delphi 7 意识到了一些即将推出的功能,并且显然,它甚至对这些功能的实现有所了解——它知道的足够多,可以预期某些东西会出现在系统单元中,并在它们不存在时抱怨。