Also schauen wir uns mal das vom Arbeitsblatt an
Delphi-Quellcode:
constructor TFruit.Create(name: string);
begin
// And save the fruit name
self.name := name;
end;
und das was du daraus gemacht hast
Delphi-Quellcode:
constructor TFruit.Create(name: string);
begin
// And save the fruit name
self.Fname := Fname;
end;
Was fällt uns auf? Eben, denn richtig wäre
Delphi-Quellcode:
constructor TFruit.Create(name: string);
begin
// And save the fruit name
self.Fname := name;
end;
denn
Delphi-Quellcode:
constructor TFruit.Create( {Argument} name: string);
begin
// And save the fruit name
self.name := {Argument} name;
end;
Es hat einfach damit zu tun, dass der Compiler sich hier entscheiden muss, worauf sich
name
denn nun bezieht. Auf ein Element der Klasse oder eben das Argument. Da das Argument der Methode in der Methode aber näher ist als die Klasse, bezieht sich
name
auf das Argument. Um auf die Klassen-Variable zuzugreifen muss man den Scope mit angeben durch
self.name
.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)