Ja, Du hast vollkommen Recht:
Momentan hat die
New-Funktion keinerlei Bedeutung - sie gibt lediglich den Eingangsparameter als Resultat zurück. Sie dient hier nur dazu, den Quelltext etwas leserlicher zu gestalten, indem darauf hingewiesen wird, daß ein neues Objekt angelegt wird/wurde. So erstellt die Funktion
Google.Maps.LatLng(...)
ein neues
TLatLng-Objekt, was aber nicht sofort offensichtlich ist.
Insofern kann die
New-Funktion momentan auch ohne Bedenken weggelassen werden.
Das wird sich aber in der kommenden Version grundlegend ändern: Dann wird das Objekt wirklich erst von der
New-Funktion erstellt, die dann etwa wie der
New-Operator in JavaScript arbeitet.
So liefert - um bei dem Beispiel zu bleiben -
Google.Maps.LatLng
nur die Klasse und
New() erstellt eine Instanz. Das Ganze dient - wie schon erwähnt - der Lesbarkeit des Quelltextes.
Auch Hilfsobjekte werden dann über die
New-Funktion erstellt, so daß der Delphi-typische Syntax
TObject.Create
bei der Verwendung des Frameworks überflüssig wird:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
with Script(WebBrowser1) do
if not APILoaded
then LoadAPIAsync(InitMap);
end;
procedure TForm1.InitMap(Sender: IObject);
var
MapOptions: IMapOptions;
begin
with Sender as IScript do
begin
MapOptions:=New(Google.Maps.MapOptions);
with MapOptions do
begin
Zoom:=8;
Center:=New(Google.Maps.LatLng(-34.397,150.644));
MapTypeID:=Google.Maps.MapTypeID.Roadmap;
end;
New(Google.Maps.Map(MapOptions));
end;
end;
Zu beachten ist hier, daß die Objekte nur noch über Interfaces angesprochen werden, was der besseren Speicherverwaltung dient.