Deutsch
Forum & Hilfe

Infinity-Profan Neuigkeiten

Proc-Parameter Typ Array Übergabe byVal statt byRef

 
Bisher wurden Arrays als Prozeduren-Parameter byRef statt byVal übergeben, also nur die Adresse statt eine Kopie. Das ist zwar schneller, kann aber zu unerwarteten Ergebnissen führen in einer leicht zu erlernenden Sprache.

Jetzt werden Arrays als Prozeduren-Parameter standardmäßig byVal übergeben, ausgenommen man setzt ein @ vor den Variablennamen in der Parameterdeklarationsanweisung:

Standard, byVal:
var a=[10 20 30]
test a
print a// gibt 10,20,30 aus

proc test a

    a[0]=55

endproc


Wenn byRef erwünscht (schneller):
var a=[10 20 30]
test a
print a// gibt 55,20,30 aus

proc test @a

    a[0]=55

endproc


Auf Parameter, die nicht vom Typ Array übergeben werden, hat @ keinen Einfluss, jedoch wird die Prüfung für diesen Parameter auf eine Array-Kopie beim setzen des @-Zeichens abgeschaltet.

Bei Funktionen, bei denen es auf höchste Geschwindigkeit ankommt, ist also eine Optimierung per @ für jeden Parameter mit einzubeziehen.

Achtung:

Eine ähnliche Falle ist einfaches Zuweisen Array=Array:
var a b=[10 20 30]
a=b
a[0]=55
print b// zeigt 55,20,30 obwohl b syntaktisch nicht manipuliert wurde

Möchte man eine Kopie von einem Array für solch Zuweisungen, dann kann dafür die Funktion arr verwendet werden:
var a b=[10 20 30]
a=arr(b)
a[0]=55
print b// zeigt 10,20,30
print a// zeigt 55,20,30
 
11.01.2016  
 




HofK
Wenn
@parameter
in der Prozedurdefinition diesen Parameter als "At resse" -Schreibfehler bewußt- übergibt, also die Referenz auf den Parameter, sollte man meinen, dass a=b für arrays auch die Kopie von b nach a bringt und dann a=@b die Referenz übergibt. Damit bräuchte man hier kein arr().

Was spricht dagegen? Was übersehe ich dabei?
 
12.01.2016  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.739 Betrachtungen

Unbenanntvor 0 min.
p.specht10.06.2021
rafl26.12.2020
rquindt11.05.2018
Micha1233419.06.2016
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

HofK (1x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie