Swift

2014-06-06 31 views
54

'da yazım hatası nasıl bildirilir Swift'de özel bir tür gerekirse, typedef yapabilir miyim, nasıl yapabilirim? Anahtar kelime typealiasSwift

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

Elma olmak Elma (~ farklı ~), kendi Typedef 'typealias' olarak adlandırılır. Apple'ın * Swift Programlama Dilini * okudun mu? – Kreiri

+0

Bu belgeyi burada da bulabilirsiniz: https://developer.apple.com/library/prerelease/ios/navigation/ (sayfadaki "Hızlı Programlama Dili" ni aramayı kesebilecek bir doğrudan bağlantı eklemek yerine) – petert

+2

@Kreiri Swift'in "typealias" özelliği "typedef" olarak adlandırılmamıştır, çünkü yeteneği "typedef" 'den çok daha azdır ve modern programlamada ihtiyaç duyulan kullanım durumlarına çok daha fazla odaklanmıştır. Bu, Swift'in genel tasarım ilkesini, C'nin küçük sözlüğünden farklı olarak,… _creative_… şekilleri yerine, özel ihtiyaçlara yönelik daha geniş bir sözlüğe sahip olmasını izler. Apple, 'typedef' olarak adlandırmayı seçmiş olsaydı, insanlar C 'typedef' gibi çalışmasını beklerdi. Microsoft'un sıkça karşılaştığı tasarım sorunu budur - yerleşik isimleri kullanacaklar ancak uygulamalarının farklı şekilde çalıştıkları. –

cevap

96

(kapatma sözdizimi typedef gibi bir şey) Yukarıdaki yanıt eklendi:

"typealias" kullanılan anahtar kelime yapar ki hızlı olduğunu typedef gibi benzer işlevler. söz dizimi, aşağıda gösterildiği gibi param

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

    } 

girişi olan bir typedef oluşturmak için:

/*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 */ 
+0

bu kapanışın yeni bir türünü nasıl tamamlayabilirim tamamlamaBlock: (NSString, NSError!) -> Void = {strg, hata myString = "Haider" println ("Metnim: \ (myString)") } –

+0

typealias newClosure = ((strg1: NSString, num1: NSNumber) -> Void)? –

+0

@WaqasHaiderSheikh 'typealias closureType = (NSString, NSError!) -> Void' gibi yapabilirsiniz. Ve şunu kullanalım: "completionBlock: closureType = {strg, // içinde bir hata yap"} –