@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
Wie kann ich einen neuen Typ dieses Abschlusses erstellen? Lassen Sie CompletionBlock: (NSString, NSError!) -> Void = {strg, Fehler in myString = "Haider" println ("Mein Text: (myString)")}
@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 = () -> Voidvar 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!) ->Voidvar test:completionBlockType = {(string:NSString, error:NSError!) ->Voidinprintln("\(string)")
}
test("helloooooooo test",nil);
/*OUTPUTS "helloooooooo test" IN CONSOLE */
typealias
. Haben Sie schon Apples Swift-Programmiersprache gelesen ?typealias
wird nicht aufgerufen,typedef
da seine Fähigkeiten weitaus geringer sind als die vontypedef
und 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ättetypedef
, würden die Leute erwarten, dass es wie C funktionierttypedef
. Das ist das Designproblem, auf das Microsoft häufig stößt - sie verwenden etablierte Namen, aber ihre Implementierung funktioniert anders.Antworten:
Das Schlüsselwort
typealias
wird anstelle von verwendettypedef
typealias CustomType = String var customString:CustomType = "Test String"
quelle
typealias closureType = (NSString, NSError!) ->Void
. Und benutze es alslet completionBlock:closureType = {strg,error in //do something}
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 */
quelle