Як оголосити typedef у Swift


81

Якщо мені потрібен спеціальний тип у Swift typedef, як я це можу зробити, як це зробити? (Щось на зразок синтаксису закриття typedef)


5
Apple, будучи Apple (~ різний ~), називається їх typedef typealias. Ви вже читали швидку мову програмування Apple ?
Крейрі,

Ви також можете знайти цей документ в Інтернеті тут: developer.apple.com/library/prerelease/ios/navigation (замість того, щоб включати пряме посилання, яке може призвести до переривання просто пошуку "Швидкої мови програмування" на сторінці)
петер,

4
@Kreiri Swift typealiasне називають, typedefоскільки його можливості набагато менше, ніж у typedef, і набагато більше зосереджені на випадках використання, необхідних у сучасному програмуванні. Це слідує загальному дизайнерському принципу Swift, щоб мати більший лексикон, орієнтований на конкретні потреби, на відміну від невеликого лексикону С, який мав бути поєднаний у… творчих … формах. Якщо Apple було вирішили назвати його typedef, люди чекатимуть його роботи , як Кассіопеяне typedef. Це проблема дизайну, з якою Microsoft часто стикається - вони використовуватимуть усталені імена, але їх реалізація працює по-іншому.
Сліпп Д. Томпсон,

Відповіді:


142

Ключове слово typealiasвикористовується замістьtypedef

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

як я можу зробити новий тип цього закриття let completeBlock: (NSString, NSError!) -> Void = {strg, error in myString = "Haider" println ("My text: (myString)")}
Waqas Haider Sheikh

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

@WaqasHaiderSheikh Ви можете зробити так, як typealias closureType = (NSString, NSError!) ->Void. І використовувати його якlet completionBlock:closureType = {strg,error in //do something}
Anil Varghese

15

додано до відповіді вище:

"typealias" - це ключове слово swift, яке виконує подібні функції, як typedef.

    /*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")

    } 

Щоб створити typedef із вхідним параметром, синтаксис такий, як показано нижче:

    /*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 */
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.