Function Signatur definieren?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

UNZ

Betreff: Function Signatur definieren?

BeitragDi, Mai 21, 2013 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich glaube zwar nicht, dass das geht, aber vllt. irre ich mich ja Smile
Ich möchte Function Pointer abstrahieren. Z.B.

Code: [AUSKLAPPEN]

Function abc(callback(a:Int, b:Float))
   callback(1,5)
End Function

Function xyz(callback(a:Int, b:Float))
   callback(1,5)
End Function


Die Signatur (d.h. (a:Int, b:Float)) möchte ich gerne nur einmal definieren und dann referenzieren.
Code: [AUSKLAPPEN]

Signature callbackSig=(a:Int, b:Float)

Function abc(callback:callbackSig)
   callback(1,5)
End Function

Function xyz(callback:callbackSig)
   callback(1,5)
End Function


Die Syntax ist natürlich Mist, aber ich denke, man sieht, was gemeint ist Smile
Sowas ist mit BMax nicht möglicht, oder?
Das muss besser als perfekt!

ZEVS

BeitragMi, Mai 22, 2013 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wäre ein Typen-Alias und ist in BlitzMax nicht in der Form möglich. Es ist allerdings sehr gut möglich, diese Abstraktion mit objektorientierter Programmierung durchzuführen. BlitzMax: [AUSKLAPPEN]
Type TCallback
Field pointer(a:Int, b:Float)
Function Create:TCallback(pointer(a:Int, b:Float))
Local result:TCallback = New TCallback
result.pointer = pointer
Return result
End Function
End Type

Function abc(callback:TCallback)
callback.pointer(1,5)
End Function

Function xyz(callback:TCallback)
callback.pointer(1,5)
End Function

Wenn man aber OOP benutzt, sollte man das vielleicht konsequenter tun und statt Funktionspointern Interfaces oder (in BlitzMax) abstrakte Klassen benutzen.

ZEVS

Thunder

BeitragMi, Mai 22, 2013 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Man sieht natürlich den Sinn dahinter, aber soweit ich informiert bin, gibt es das gar nicht. Mich persönlich stört es ja bereits, dass man Bezeichner angeben muss (a:Int, b:Float) statt einfach (:Int, :Float) oder so. Denn die Namen interessieren ja niemanden.
Jedenfalls ist mir das Syntaxelement, das du suchst, noch nie untergekommen (also weder Dokumentation noch fremde Quelltexte).

BlitzMax ist halt teilweise mühsam, auch wenn es andererseits vieles vereinfacht Smile
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group