在C++中,如果我必须从另一个命名空间调用一个函数,比如说foo,我有两个选择:添加using namespace foo;上面的代码或在执行调用时指定命名空间,即foo::myFunction().
在Delphi中,是否有与第二种替代方案相对应的构造?
And*_*and 10
不,没有.如果一个标识符(例如,功能,如myFunction)在单元中声明foo,则在不同的单元,bar比方说,则不能使用myFunction不添加foo到uses无论是在条款implemantation或interface章节.
一些讨论
假设你有两个函数MyFunc,一个是in foo,一个是in bar.让我们说你在foo.如果您不add禁止其中一个uses列表,那么MyFunc将参考foo.MyFunc,而您无法访问其他功能.如果添加bar到其中一个uses列表,那么MyFunc仍将引用本地函数foo.MyFunc,但您可以通过写入访问另一个bar.MyFunc.为了减少混淆的风险,你总是可以选择是明确的,写foo.MyFunc及bar.MyFunc,决不只MyFunc.
一个常见的情况是这样的:你有一个标识符,ident在这两个foo和bar(他们可能是非常不同的),和MyUnit,你都foo和bar一些uses列表.然后,in MyUnit,ident将引用foo.ident或bar.ident,取决于使用条款中最后一个单位.要使用另一个,您必须明确单位(如foo.ident或bar.ident).当然,为了减少犯错的风险,你可以永远明确(例如,foo.ident即使foo是最后一次写,所以ident也指foo.ident).
一个常见的错误就是混淆Windows.TBitmap使用Graphics.TBitmap.通常,TBitmap指Graphics.TBitmap(Windows单位通常在uses条款中提前).这种困惑已在SO处理.
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |