referenz oder datenkopie?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

krux

Betreff: referenz oder datenkopie?

BeitragMo, Apr 02, 2007 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke

Edit:

wie kann man ein array übergeben? es ist mehrdimensionalig.

FOODy

BeitragMo, Apr 02, 2007 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Apr 02, 2007 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, da hätte ich eigentlich selbst drauf kommen müssen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group