referenz oder datenkopie?
Übersicht

kruxBetreff: referenz oder datenkopie? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich würde gerne wissen, wenn ich etwas an eine Funktion übergebe, ob meine Daten kopiert werden, oder ob ein link an meine Daten übergeben wird. Das wür ich gerne bei folgenden Datentypen wissen:
Int float & co. Eigene Types TList TImage arrays Ich frage, weil ich weiß, dass da viele Sprachen völlig unterschiedlich drauf reagieren. Oder ist es so wie bei C++, dass man das selbst sagen muss, was als referenz übergeben wird? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Falsches Board drum move
2. Nummerntypen sind immer kopien. Wenn du da referenzen willst musst du VAR anhängen 3. Objekte (und das heisst alles ausser Nummerntypen) sind immer Referenzen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
krux |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke
Edit: wie kann man ein array übergeben? es ist mehrdimensionalig. |
||
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wie man in Deklariert würd ich mal glatt behaupten.
Code: [AUSKLAPPEN] Local arr:int[][] function _Arr(arr:int[][]) endfunction Gruß, FOODy |
||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
krux |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
FOODy hat Folgendes geschrieben: So wie man in Deklariert würd ich mal glatt behaupten.
Code: [AUSKLAPPEN] Local arr:int[][] function _Arr(arr:int[][]) endfunction Gruß, FOODy deklarieren tut man den doch mit [a,b] das andere ist doch c |
||
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das würde dann so aussehen:
Code: [AUSKLAPPEN] SuperStrict
Framework BRL.AppStub Local arr:Int[2 , 4] L(arr) Function L(arr:Int[,]) EndFunction |
||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
krux |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aha, ist das framework so wichtig (hab bisher immer ganz ohne das wort "framework" arbeiten können, und dies auch getan)
Edit: habs mal ausprobiert danke, so klappts. Code: [AUSKLAPPEN] SuperStrict
Local arr:Int[2 , 4] L(arr) Function L(arry:Int[,]) Print arry[1,3] EndFunction sorry mit framework habe ich keine konsole mehr, und die finde ich schon wichtig für debuginformationen, aber in meinem Programm klappt es immer noch nicht Code: [AUSKLAPPEN] Type Surface
Field tiles:TImage Field tilewidth% Field data:Byte[,] Field xspeed# Field yspeed# Function create(t:TImage,tw%,dat:Byte[,],xs#,ys#) s:Surface=New Surface tiles=t tilewidth=tw data=dat xspeed=xs yspeed=ys End Function End Type |
||
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der fehler ist aber in deinem Programm.
So müsste es lauten: Code: [AUSKLAPPEN] Type Surface Field tiles:TImage Field tilewidth% Field data:Byte[,] Field xspeed# Field yspeed# Function create(t:TImage,tw%,dat:Byte[,],xs#,ys#) local s:Surface=New Surface s.tiles=t s.tilewidth=tw s.data=dat s.xspeed=xs s.yspeed=ys End Function End Type Gruß, FOODy |
||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ne erstmal so
weil soll ja dann was zurück geben local s:TSurface s=TSurface.create() Code: [AUSKLAPPEN] Type TSurface Field tiles:TImage Field tilewidth% Field data:Byte[,] Field xspeed# Field yspeed# Function create:TSurface(t:TImage,tw%,dat:Byte[,],xs#,ys#) local s:TSurface=New TSurface s.tiles=t s.tilewidth=tw s.data=dat s.xspeed=xs s.yspeed=ys return s End Function End Type |
||
krux |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, da hätte ich eigentlich selbst drauf kommen müssen. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group