ऑब्जेक्ट पास्कल/डेल्फी में सी/सी ++ स्थैतिक स्थानीय चर की समान कार्यक्षमता प्राप्त करने का प्रयास कर रहा है। के सी में एक निम्न कार्य हो करते हैं:सही सी स्थिर स्थानीय चरणीय प्रतिस्थापन?
bool update_position(int x, int y)
{
static int dx = pow(-1.0, rand() % 2);
static int dy = pow(-1.0, rand() % 2);
if (x+dx < 0 || x+dx > 640)
dx = -dx;
...
move_object(x+dx, y+dy);
...
}
समतुल्य ObjectPascal कोड लिखा स्थिरांक का उपयोग कर एक स्थिर चर स्थानापन्न के रूप में संकलित करने के लिए विफल रहता है:
function UpdatePosition(x,y: Integer): Boolean;
const
dx: Integer = Trunc(Power(-1, Random(2))); // error E2026
dy: Integer = Trunc(Power(-1, Random(2)));
begin
if (x+dx < 0) or (x+dx > 640) then
dx := -dx;
...
MoveObject(x+dx, y+dy);
...
end;
[डीसीसी त्रुटि] test_f.pas (332): E2026 लगातार अभिव्यक्ति की उम्मीद
तो क्या एक बार के पास स्थानीय परिवर्तनीय प्रारंभ करने का कोई तरीका है?
एक और अधिक समझदार विकल्प आपके समारोह अपनी ही इकाई देने के लिए हो सकता है, और है कि यूनिट के कार्यान्वयन वर खंड में वैश्विक घोषणा करते हैं। यह तब उस इकाई के लिए निजी है, और इस तरह, उस समारोह में। मेरे पास एक समय के बारे में सोचने में भी मुश्किल समय है जब मैं इसे एक निजी क्षेत्र के साथ किसी वस्तु का उपयोग करने के बजाय करना चाहता हूं। जवाब के लिए –