Lütfen bunun sadece bir düşünce deneyi olduğunu unutmayın.
Küresel (statik) varsların kötü olduğunu ve kırılmaların kapsamının her durumda kötü bir fikir olduğunu biliyorum. nasıl bunu beyan ediyor işlevin kapsamı dışında CanIBeChanged
değerini değiştirebilir, etkinleştirilmiş yazılabilir sabitleri varsayarsakYerel tiplenmiş bir sabiti * dışında bildirilen rutini değiştirmenin bir yolu var mı?
function IsItChanged: integer;
const
CanIBeChanged: integer = 0;
begin
Result:= CanIBeChanged;
end;
:
Aşağıdaki kodu düşünün?
PS Hayır Bu kodu hiç kullanma niyetinde değilim, sadece ilgi çekici bir soru.
Yerel yazılabilir bir const dosyasının süresi nedir? Kod, yöntemden ayrılıncaya kadar (normal bir yerel değişken gibi) veya paylaşılıyor mu? İlk durumda kodunuzun tanımlanmamış bir davranışı vardır. – CodesInChaos
@CodeInChaos Gerçekten tuhaf bir yapı. Onlar gerçekten küresel değişkenlerdir. Statik depolama ile C yerlileri ile eşdeğerdir. –
Böyle bir şey hatırlamaya çalışıyordum, ama artık emin değildim. – CodesInChaos