Italia
Foro & Aiuto

Infinity-Profan Notizie

Proc-Parameter Typ Array Übergabe byVal statt byRef

 
Bisher wurden Arrays als Prozeduren-Parameter byRef statt byVal trasferimento, 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 trasferimento, 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 trasferimento werden, hat @ keinen Einfluss, jedoch wird die Prüfung per 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 @ per 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 per 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 per 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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.748 Views

Untitledvor 0 min.
p.specht10.06.2021
rafl26.12.2020
rquindt11.05.2018
Micha1233419.06.2016
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

HofK (1x)
iF (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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