Hayır, yok. (myFunction
gibi böyle bir fonksiyonu olarak) bir tanımlayıcı ünitesinde foo
ilan edilirse, o zaman farklı bir birim bar
yılında, diyelim ki, sen implemantation
veya interface
bölümünde ya uses
maddeye foo
eklemeden myFunction
kullanamaz.
Bazı tartışma
Diyelim ki iki işlevi MyFunc
, foo
içinde bir ve bar
bir var diyelim. Diyelim ki foo
'dasınız. add
çubuğunu uses
listelerinden birine yapmazsanız, MyFunc
foo.MyFunc
'a başvurur ve diğer işleve erişemezsiniz. bar
listelerini uses
listelerinden birine eklerseniz, MyFunc
foo.MyFunc
yerel işlevine yine de başvuracak, ancak bar.MyFunc
yazarak diğerine erişebilirsiniz. Karışıklık riskini azaltmak için, her zaman açık olmak ve foo.MyFunc
ve bar.MyFunc
, ve sadece MyFunc
yazabilirsiniz.
yaygın bir senaryo şudur: Eğer (onlar çok farklı olabilir) foo
ve bar
hem de bir tanımlayıcı ident
var ve MyUnit
yılında, bazı uses
listede hem foo
ve bar
var. Sonra, MyUnit
, ident
, kullanım maddelerinde sonun hangi birime bağlı olduğuna bağlı olarak foo.ident
veya bar.ident
, 'a başvuracaktır. Diğerini kullanmak için, birim hakkında açık olmalısınız (foo.ident
veya bar.ident
gibi). Tabii ki, hata yapma riskini azaltmak için, her zaman açık olabilirsiniz (örneğin foo
son verse bile foo.ident
yazınız, böylece ident
aynı zamanda foo.ident
).
Sık karşılaşılan bir hata, Windows.TBitmap
'u Graphics.TBitmap
ile karıştırmaktır. Normal olarak, TBitmap
, Graphics.TBitmap
(Windows
birimi genellikle uses
maddelerinde erken gelir) anlamına gelir. Bu karışıklık SO'da tedavi edildi.
C++ senaryolarınızın başlıkla ilgili bir şeyleri göremiyorum. Delphi'deki birimleri kullanarak nasıl bir ilişki vardır? Aynı temel kelimeyi kullanırlar * kullanımı *, ama bu konuyla ilgili. –
@RobKennedy: Pascal'ın birimleri sadece bir kod dosyasının ad alanları gibi davranır. Yani, senaryolar bir C++ POV'den geçerli bir metafordur. –