Selectors?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

oware

Betreff: Selectors?

BeitragFr, Aug 07, 2009 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich hab mal ne Frage. Und zwar liebe ich Selectors aus ObjC, und eigentlich müsste es die doch auch in Bmax geben oder nich? Und falls, wie benutzt man sie denn?

thx i.a

oware
www.myspace.com/oliverpuetz -> Mein Instrumentalprojekt

BtbN

BeitragFr, Aug 07, 2009 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Was sind Selektoren?

oware

BeitragFr, Aug 07, 2009 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
mit nem selektor ruft man eine methode auf. Also zB um eine Methode in der Haupt-Programmschleife aufzurufen geht das mit nem selector, zB:

Code: [AUSKLAPPEN]

[self schedule:(update:)];

- (void)update{
   //bla
}


in bmax schreibweise die erste zeile:
Code: [AUSKLAPPEN]

self.schedule( 'und hier dann der "selector"' )


Ich hoffe man versteht was ich meine. man übergibt ne funktion als parameter, die soll aber nicht direkt aufgerufen werden, sondern irgendwann mal, dazu der selector, der auf die funktion verweist.

hoffentlich hilft es dir mir zu helfen Very Happy

oware
www.myspace.com/oliverpuetz -> Mein Instrumentalprojekt

Jolinah

BeitragFr, Aug 07, 2009 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kann man in BlitzMax mittels Funktionszeigern realisieren:

Code: [AUSKLAPPEN]

Function Schedule( MeineFunktion() )
   MeineFunktion()
End Function


Function Update()
End Function

Schedule(Update)


Oder mit Parametern:
Code: [AUSKLAPPEN]

Function Schedule( MeineFunktion(param1:String, param2:Int) )
    MeineFunktion("Hallo Welt", 3)
End Function

Function Update(param1:String, param2:Int)
End Function

Schedule(Update)

BtbN

BeitragFr, Aug 07, 2009 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke nicht, dass das das selbe ist.

Jolinah

BeitragFr, Aug 07, 2009 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, das war das erste was mir zu dieser Beschreibung einfiel. Klingt jedenfalls ziemlich nach Funktionszeiger, kenne Objective C leider zu schlecht Wink

Zitat:
man übergibt ne funktion als parameter, die soll aber nicht direkt aufgerufen werden, sondern irgendwann mal, dazu der selector, der auf die funktion verweist.
  • Zuletzt bearbeitet von Jolinah am Fr, Aug 07, 2009 21:17, insgesamt einmal bearbeitet

BtbN

BeitragFr, Aug 07, 2009 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist das ganze vllt. so etwas wie die Delegates aus C#?

oware

BeitragFr, Aug 07, 2009 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
sowas in die richtung, ja. GUI ist ein gutes beispiel: man erstellt einen button und übergibt dem event buttonclick den selector für eine funktion, die aufgerufen werden soll, sobal man auf den button klickt. und ich glaube die funktionszeiger machen das nich mit oder?
www.myspace.com/oliverpuetz -> Mein Instrumentalprojekt

maximilian

BeitragFr, Aug 07, 2009 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe keine Ahnung was du meinst. Aber ich rate mal wild:

BlitzMax: [AUSKLAPPEN]
SuperStrict

Type Schedule

Field func()

Method SetFunc(f())

func = f

End Method

Method CallFunc()

If func Then func()

End Method

End Type

Local MySchedule:Schedule = New Schedule

MySchedule.SetFunc(HelloWorld)
MySchedule.CallFunc()

Function HelloWorld()

Print "Hello World"

End Function
Variety is the spice of life. One day ignore people, next day annoy them.

oware

BeitragFr, Aug 07, 2009 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
jep, danke Very Happy so einfach geht das also Smile cool
www.myspace.com/oliverpuetz -> Mein Instrumentalprojekt

Jolinah

BeitragFr, Aug 07, 2009 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, mit Funktionszeigern geht das für Events. Nachteil gegenüber den Delegates bzw. Events aus C# ist halt, das man nicht mehrere Funktionen zuweisen kann die ausgeführt werden. Man könnte aber auch einfach ein Array mit Funktionszeigern machen Smile Und die Funktionszeiger können auch nur auf Funktionen, nicht aber auf Methoden zeigen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group