swift用全域常量代替宏

來源:互聯網
上載者:User
 

預先處理指令

Swift編譯器不包含前置處理器。取而代之的是,它充分利用了編譯時間屬性,組建組態和語言特性來完成相同的功能。因此,Swift沒有引進預先處理指令。

 

簡單宏

在C和Objective-C,您通常使用的#define指令定義的一個基本常數,在Swift,您可以使用全域常量來代替。例如:一個全域定義#define FADE_ANIMATION_DURATION 0.35,在Swift可以使用let FADE_ANIMATION_DURATION = 0.35來更好的表述。由於簡單的用於定義常量的宏會被直接被映射成Swift全域量,Swift編譯器會自動引進在C或Objective-C源檔案中定義的簡單宏。

 

複雜宏

在C和Objective-C中使用的複雜宏在Swift中並沒有副本。複雜宏是那些不用來定義常量的宏,包含帶括弧的函數式宏。您在C和Objective-C使用複雜的宏以避免類型檢查的限制,或避免重新鍵入大量的樣板代碼。然而,宏也會產生Bug和重構的困難。在Swift中你可以使用函數和泛型來達到同樣的效果,無需任何的妥協。因此,在C和Objective-C源檔案中定義的複雜宏在Swift是不能使用的。

 

編譯配置

Swift代碼和C、Objective-C代碼被有條件地,以不同方式編輯。SWIFT代碼可以根據組建組態的評價可以有條件地編譯。組建組態包括true和false字面值、命令列標誌以及下表中的平台測試函數。您可以使用-D <#Flag#>指定命令列標誌。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.