Type bei Function zurückgeben?
Übersicht

feiadragonBetreff: Type bei Function zurückgeben? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute
also direkt mal mein prob: Code: [AUSKLAPPEN] function laden(meshstring$,anders) new current.mesh= new mesh current\hof=loadmesh(meshstring) ;hof=handleoffile ;noch weiteres return current delete current (oder so) end function ;so und im Hauptprog: mesh1.mesh=new mesh mesh1=laden("mesh.b3d",.........) gibt irgendeine Komische Fehlermeldung... Wieso? thx, feidragon |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was für eine Fehlermeldung kommt denn?
Hast du das Type als Global definiert? |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Code: [AUSKLAPPEN] function laden.mesh(meshstring$,anders) ging das nich so irgendwie? Achja, ich weis nich genau, wie das bei Blitzbasic is, zumindest bei C++ würde der Code unter dem Return nichtmehr ausgeführt werden. grüße |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, der Code unterm Return wird nicht mehr ausgeführt, da Return direkt zurückkehrt. | ||
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das was Davis gesagt hat ist richtig.
DIe Funktion muss natürlich wissen was sie zurückliefern soll und daher auch von diesem Type sein. Es macht außerdem keinen Sinn das Objekt das zurückgegeben wurde zu löschen denn wieso sollte man etwas zurückgeben was sowieso gelöscht wird. Beim zurückgeben des Objekts wird dieses nicht in ein neues kopiert sondern eine Referenz auf das Objekt zurückgegeben. Somit existiert nur ein Objekt (kannst du per for each testen) und es besteht kein Grund es zu löschen. |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
so würde es auch gehen
global allmesh.mesh global mesh1.mesh = new mesh laden "blabla",mesh1 function laden(meshstring$,m.mesh1) m\hof=loadmesh(meshstring) end function und so glaube ich auch global mesh1.mesh laden "blabla",mesh1 function laden(meshstring$,m.mesh1) m.mesh = new mesh m\hof=loadmesh(meshstring) end function |
||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
type bla
field feld end type handle_t=new_type() b.bla=object.bla(handle_t) print b\feld function new_type() b.bla=new bla b\feld=12345 return handle(b) end function |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@regaa
warum nimmt ihr eigentlich immer alle das Handle und schreibt die Func. nicht gleich richtig mit Function Name.BlaBlaType() ??? |
||
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich verstehe auch nicht wieso ihr dort handles benutzt.
Finde es viel zu umständlich. Würde es auch wie Markus Aber wenn du es so machst dann wandle das zurückgegebene Handle doch gleich wieder in ein objekt um und speichere es nicht erst zwischen. Sieht dann zwar unschön und unsauber aus, aber das ist bei handles in diesem verwendungszweck immer so. Code: [AUSKLAPPEN] b.bla=object.bla(new_type())
Da finde ich das hier viel schöner: Code: [AUSKLAPPEN] b.bla=new_type.bla()
So weiß man auch direkt was zurückgegeben wird. Das .bla hinter dem new_type kann man beim aufruf auch weglassen da der typ ja schon in der Deklaration angegeben ist. |
||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Blatolo hat Folgendes geschrieben: Aber wenn du es so machst dann wandle das zurückgegebene Handle doch gleich wieder in ein objekt um und speichere es nicht erst zwischen. Sieht dann zwar unschön und unsauber aus, aber das ist bei handles in diesem verwendungszweck immer so. Code: [AUSKLAPPEN] b.bla=object.bla(new_type())
Weil ich den zurückgegebenen Handle Wert weitergeben möchte und das nicht nur einmal. Blatolo hat Folgendes geschrieben: Da finde ich das hier viel schöner: Code: [AUSKLAPPEN] b.bla=new_type.bla()
So weiß man auch direkt was zurückgegeben wird. Das .bla hinter dem new_type kann man beim aufruf auch weglassen da der typ ja schon in der Deklaration angegeben ist. Ist denk ich mal Geschmackssache, ich persönlich finde was ich da oben geschrieben hab besser (Vielleicht nicht wegen der performance, aber wegen der Übersichtlichkeit). |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo ist Geschmackssache.
Code: [AUSKLAPPEN] temp.raumschiff = GetKiller() Function GetKiller.raumschiff() For r.raumschiff = each raumschiff if r\killer = 1 Then Return r Next End Function Code: [AUSKLAPPEN] tmphandle = GetKiller() temp.raumschiff = Object.raumschiff(tmphandle) Function GetKiller() For r.raumschiff = each raumschiff if r\killer = 1 Then Return Handle(r) Next End Function Naja ist eigentlich beides recht übersichtlich. Nur finde ich das es in so einer Situation unnötig ist einen Umweg über das Handle zu machen. Man wandelt ja auch nicht ein Int in einen String um, gibt diesen zurück und dann wandelt man den String wieder in nen Int um. Ok ist nicht ganz das selbe, aber trotzdem... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group