2016-11-24 2 views
0

Ich nähern mich der Ada-Sprache. Ich schrieb dieses einfaches Programm, das über ein Array-Loops und erhöht jeden einzelnen Wert, aber der Compiler gibt mir einen Fehler des Typs:Weisen Sie die Werte für ein Array in Ada

hello.adb:8:07: left hand side of assignment must be a variable 

Das Programm in Frage lautet:

with Ada.Text_IO; 
procedure hello is 
type myArrayDefinition is array (1 .. 10) of integer; 
myArray : constant myArrayDefinition := (1 => 3, others => 2); 
begin 
    for A in 1 .. 10 loop 
    myArray(A) := myArray(A) + 1; 
    end loop; 
end hello; 

Könnte jemand helfen ich, um das Problem zu verstehen?

+10

Die Fehlermeldung sagt Ihnen genau, was los ist. 'myArray' ist keine Variable, es ist eine Konstante. –

+1

Nur für den Fall, dass Sie Erfahrung mit einer anderen Sprache haben: Ein Array-Objekt in Ada ist keine Referenz, es ist ein echtes Objekt. Wie erwähnt, ist Ihre Konstante, und dann ist sie als Ganzes konstant. Das gilt auch für andere Objekte. – B98

Antwort

3

Sie können den Wert einer Konstante nicht ändern. Es gibt keine speziellen Probleme im Zusammenhang mit dem Ändern der Werte von Arrays.

+0

IOW: Der Compiler * könnte * gesagt haben: "Das Ziel einer Zuweisung muss eine Variable sein, keine Konstante." –

Verwandte Themen