Add a variable to a class instance at runtime: Difference between revisions

Content added Content deleted
m (→‎{{header|Wren}}: Changed to Wren S/H)
(PascalABC.NET)
 
Line 1,472: Line 1,472:
01.06.1993
01.06.1993
</pre>
</pre>

=={{header|PascalABC.NET}}==
Adding variables to an object at runtime is not possible in PascalABC.NET because it is a statically typed language requiring the names of all class variables to be known at compile time.

However, we can make it appear as though variables are being added at runtime by using a Dictionary.
<syntaxhighlight lang="delphi">
type
MyClass = class
private
dict := new Dictionary<string,object>;
public
procedure Add(name: string; value: object) := dict[name] := value;
property Items[name: string]: object read dict[name]; default;
end;

begin
var obj := new MyClass;
obj.Add('Name','PascalABC.NET');
obj.Add('Age',16);
Println(obj['Name'],obj['Age']);
var obj1 := new MyClass;
obj1.Add('X',2.3);
obj1.Add('Y',3.8);
Println(obj1['X'],obj1['Y']);
end.
</syntaxhighlight>
{{ out }}
<pre>
PascalABC.NET 16
2.3 3.8
</pre>



=={{header|Perl}}==
=={{header|Perl}}==