Ich arbeite mit Swift und SpriteKiteine Funktion aufrufen, die Argumente mit SKAction.runBlock erwartet()
Ich mag würde SKAction.runBlock() verwenden, um eine Funktion auszuführen, die Argumente erwarten:
class Tile : SKShapeNode
{
}
override func didMoveToView()
{
let tile = Tile()
tile.runAction(SKAction.runBlock(myFunc(tile)))
}
func myFunc(tile: Tile)
{
}
Wenn ich versuche, eine Funktion zu erstellen, die kein Argument nicht erwarten, alles funktioniert gut, aber der Code oben gibt diese:
Wert kann nicht vom Typ konvertieren ‚()‘ zu erwarteten Argumenttyp ' Versand _block_t '(alias' @convention (block)() ->() ')
Was verstehe ich nicht?
Vielen Dank für diese klare Erklärung. Warum kann ich eine Funktion ohne erwartetes Argument aufrufen, ohne "{}" eingeben zu müssen? – Drakalex
@Drakalex, in Swift werden Methodenverweise automatisch in einen Abschluss mit demselben Funktionstyp konvertiert. Wenn Sie also 'myFunc' schreiben, erstellen Sie eine Schließung vom Typ' (Tile) -> Void'. Also, wenn 'anotherFunc' als' func anotherFunc() {} 'deklariert wird, erzeugt das Schreiben von' anotherFunc' eine Schließung vom Typ '() -> Void' (wie' ') ->()'), was Sie auch tun können habe schon gesehen. – OOPer
Funktionen sind Schließungen, es ist ein Sonderfall Schließung, so dass keine Konvertierung passiert. (Ignorieren letzten Kommentar, ich verstehe, was Sie jetzt sagen) – Knight0fDragon