Program geliştirme sırasında yanlışlıkla bir sınıflar içinde bildirilir her türlü küresel görünürlüğü olduğunu saptadık.Özel türler herkes tarafından görülebilir mi?
Hep tip TMyClass.TMytype.Value gibi sınıf tipi adıyla anılır sürece kendi görünürlük sınıfına sınırlı olduğunu düşündüm;
aşağıdaki gibi yapıları olarak, gerçekten yanlış burada bir şey yapıyor muyum:
unit MyTest;
interface
type TMyTest = class
constructor Create;
strict private
type TMyType = (NUL, SLEEP);
end;
implementation
// ...
bu (MyTest) birimini kullanan diğer birimlerde çatışmaları neden olur.
birim Uyku varsa (100); çağrı, TMyTest.TMyType.SLEEP ile çakışacak ve çakışmaların önlenmesi ilk olarak SLEEP sınıfında ve TMyType içinde kapsüllemedim.
bir geçici çözümler için herhangi bir öneri?
Gerçekten şaşırtıcı ama David onun cevabını bahseder gibi: o enum değerleri için kasıtlı bu. FYI: Enum değerlerinin kapsam çatışması, uzun yıllardır Delphi'de bir sorun olmuştur. Bu nedenle, sözleşmelerle, geliştiriciler genellikle enum değerlerini ön ekler. Örneğin. TMyType = (mtNUL, mtSLEEP); '(Kod stili tutarlılığını sağlamayı düşünmeye değer bir şey.) Daha genel uygulanabilirliği için değinmeye değecek başka bir çözüm: tanımlayıcıların çatıştığı yerde, çatışmayı çözmek için istenen birim adını önekleyebilirsiniz. Örneğin. 'Windows.Sleep' –