Wie deklariere ich typedef in Swift?


78

Wenn ich einen benutzerdefinierten Typ in Swift benötige typedef, wie könnte ich das tun? (So ​​etwas wie eine Abschlusssyntax typedef)


5
Apple ist Apple (~ anders ~), ihr typedef heißt typealias. Haben Sie schon Apples Swift-Programmiersprache gelesen ?
Kreiri

Sie finden dieses Dokument auch online hier: developer.apple.com/library/prerelease/ios/navigation (anstatt einen direkten Link
einzuschließen

4
@Kreiri Swift's typealiaswird nicht aufgerufen, typedefda seine Fähigkeiten weitaus geringer sind als die von typedefund sich viel stärker auf die Anwendungsfälle konzentrieren, die in der modernen Programmierung benötigt werden. Dies folgt dem allgemeinen Entwurfsprinzip von Swift, ein größeres Lexikon zu haben, das auf bestimmte Bedürfnisse ausgerichtet ist, im Gegensatz zu Cs kleinem Lexikon, das auf… kreative … Weise kombiniert werden soll. Wenn Apple es genannt hätte typedef, würden die Leute erwarten, dass es wie C funktioniert typedef. Das ist das Designproblem, auf das Microsoft häufig stößt - sie verwenden etablierte Namen, aber ihre Implementierung funktioniert anders.
Slipp D. Thompson

Antworten:


137

Das Schlüsselwort typealiaswird anstelle von verwendettypedef

typealias CustomType = String
var customString:CustomType = "Test String"

Wie kann ich einen neuen Typ dieses Abschlusses erstellen? Lassen Sie CompletionBlock: (NSString, NSError!) -> Void = {strg, Fehler in myString = "Haider" println ("Mein Text: (myString)")}
Waqas Haider Sheikh

typealias newClosure = ((strg1: NSString, num1: NSNumber) -> Void)?
Waqas Haider Sheikh

@WaqasHaiderSheikh Das kannst du gerne machen typealias closureType = (NSString, NSError!) ->Void. Und benutze es alslet completionBlock:closureType = {strg,error in //do something}
Anil Varghese

14

zur obigen Antwort hinzugefügt:

"typealias" ist das Schlüsselwort "swift", das eine ähnliche Funktion wie "typedef" hat.

    /*defines a block that has 
     no input param and with 
     void return and the type is given 
     the name voidInputVoidReturnBlock*/        
    typealias voidInputVoidReturnBlock = () -> Void

    var blockVariable :voidInputVoidReturnBlock = {

       println(" this is a block that has no input param and with void return")

    } 

Um ein typedef mit Eingabeparameter zu erstellen, lautet die Syntax wie folgt:

    /*defines a block that has 
     input params NSString, NSError!
    and with void return and the type 
    is given the name completionBlockType*/ 
    typealias completionBlockType = (NSString, NSError!) ->Void

    var test:completionBlockType = {(string:NSString, error:NSError!) ->Void in
        println("\(string)")

    }
    test("helloooooooo test",nil);
    /*OUTPUTS "helloooooooo test" IN CONSOLE */
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.