1. 程式人生 > >Swift 巨集定義

Swift 巨集定義

swift中沒有了#Define這種巨集定義了,可以用兩種途徑來代替之前的Define處理的情況,分別是

  • 可以用let來宣告常量,來取代常量巨集定義
  • 可以用全域性func來替代複雜表示式的巨集定義
  1. < let常量定義>判斷當前系統版本
let IS_IOS7 = (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 7.0 
let IS_IOS8 = (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 8.0
這種用let替代#define只適用於一般的常量巨集,如果是表示式或者其他複雜的巨集,let也無能無力

2.<複雜表示式巨集定義>使用全域性func函式

func IS_IOS7() ->Bool { 
return (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 7.0 } 
func IS_IOS8() -> Bool { 
return (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 8.0
}

這樣,就可以在三元表示式中使用了:

navBar = UIView(frame: CGRectMake(0, 0, 320, IS_IOS7() ? 64:44))

還有RGBA巨集

RGBA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)]

可以寫成這樣:

func RGBA (r:CGFloat, g:CGFloat, b:CGFloat, a:CGFloat) { return UIColor (red: r/255.0, green: g/255.0, blue: b/255.0
, alpha: a) }
var theColor : UIColor = RGBA (255, 255, 0, 1)

相關推薦

Swift 巨集定義

swift中沒有了#Define這種巨集定義了,可以用兩種途徑來代替之前的Define處理的情況,分別是 可以用let來宣告常量,來取代常量巨集定義 可以用全域性func來替代複雜表示式的巨集定義 < let常量定義>判斷當前系統版本

OC&swift中的巨集定義

在使用OC和swift進行混編時,我們經常會需要在swift中使用OC中的巨集定義,但是這些巨集定義經常會提示無法找到或者型別錯誤,那麼我們到底應該怎麼做

Swift學習仿照OC中的巨集定義

在Swift中不需要去建立header檔案,只需要建立一個類即可,什麼也不用配置。下面是一些本人總結的一些常用的巨集定義:let GWIDTH  = UIScreen.main.bounds.size.widthlet GHEIGHT = UIScreen.main.boun

如何為Swift進行巨集定義

這陣子一直在自學Swift, 因為之前iOS的開發一直用Objective-C, 所以習慣了C語言那種巨集定義方式, Swift作為一款更加安全的語言, 放棄了C語言中的巨集定義, 有效的防止預編譯時程式碼巨集替換的安全隱患, 但是也並非不能進行巨集定義, 在這裡我們可

Swift定義打印方法

orm rom -m http mat cti nbsp 使用 span Swift 自定義打印方法 #代碼如下 // MARK:- 自定義打印方法 func MLLog<T>(_ message : T, file : String = #file, fun

swift定義view VFL 設置約束沖突

不顯示 一個 table ble 漸變 解決方法 dsd mar 控件顯示 1. tableview的cell 上添加了一個自定的view,view上帶圓角,漸變色啥的, 修改按鈕和 刪除按鈕 在人數為0的時候才顯示, 此時在model復制的時候動態改變,cell高度會出現

lua裡實現類似巨集定義,動態生成程式碼

其實就是用了  lua 的 loadstring 功能。 1.把需要動態生成的程式碼拼接成為一個字串。 str 2. loadstring(str)   這個只是解析了程式碼,相當於一個function   需要 執行一下才會生效

c語言巨集定義#define

1. 利用define來定義 數值巨集常量     #define 巨集定義是個演技非常高超的替身演員,但也會經常耍大牌的,所以我們用它要慎之又慎。它可以出現在程式碼的任何地方,從本行巨集定義開始,以後的程式碼就就都認識這個巨集了;也可以把任何東西定義成巨集。因為編譯器會在預編譯的時候用真身替換

C語言開關巨集定義的學習##__VA_ARGS__

最近寫c程式,學到一種開關巨集,極大提高程式的控制性: #define __DEBUG #ifdef __DEBUG #define tnfs_print(format, ...) printf (format, ##__VA_ARGS__) #else #define tnfs_print

cocos2dx 常用函式和巨集定義

最近我們的cocos2d-x遊戲專案已經進入了正式開發的階段了,幾個dev都辛苦碼 程式碼。cocos2d-x還是一套比較方便的api的,什麼action啊、director啊、ccpoint啊都蠻便捷的。但是我看到幾個dev有時 候會很不知道用它們,還是首先自己去寫函式…… 用一些比較原始

巨集定義的用法

有五種用法,含有引數和不含引數,行尾都不用加分號 #define   <識別符號>  [<替換列表>] //類似於全域性變量了 //如果其他檔案沒有包含定義巨集的檔案,則在巨集定義的位置結束,如果有包含,則到包含的檔案結束 #de

行內函數,巨集定義,記憶體對齊,型別轉換

巨集 與 inline的區別 存在的價值,兩者都是文字替換,降低程式跳轉次數,提高效率 1. define 是預處理命令,無法除錯 ,最簡單文字替換,     inline 是編譯期替換,可以除錯, 存在引數型別檢查 2. 使用inline的時候,函式必須定義   直接定義的函式

C/C++中標準巨集定義及其用法

ANSI C標準中有幾個標準預定義巨集 __func__:在原始碼中插入當前所在函式名; __LINE__:在原始碼中插入當前原始碼行號; __FILE__:在原始檔中插入當前原始檔名; __DATE__:在原始檔中插入當前的編譯日期 __TIME__:在原始檔

除錯技巧:封裝printf列印除錯資訊和巨集定義開關

/* #define DEBUG */ #ifdef DEBUG #define DEBUG_ERR(format, ...) \ do{ \ printf("\r\n"); \ printf("FILE: "__FILE__", LINE: %

巨集定義一些用法

一:引數名必須保持一致: #define Fun(a,b) f(a,b) Fun(1,2) ===>f(1,2) #define Fun(a,b) f(a1,b2) Fun(1,2) ==>f(a1,b2) 二:##一些注意事項 #define SIGN(x) INT_x SIGN(3)

如何通過 讀取配置引數 而不是 預編譯 巨集定義方式 來決定是否執行printf函式

在一個專案中,本來開始決定通過巨集定義方式來決定是否進行 printf 列印除錯資訊的,但後面考慮到使用配置引數的方式應該更好,因為通過巨集定義方式,還需要再編譯一遍程式才能進行顯示,而通過讀取配置引數方式,只需要在配置檔案中更改配置項即可,這樣更符合實際需要。  大致思路:先將需要列

C中的預編譯巨集定義

  在將一個C源程式轉換為可執行程式的過程中, 編譯預處理是最初的步驟. 這一步驟是由前處理器(preprocessor)來完成的. 在源流程式被編譯器處理之前, 前處理器首

Android.mk中新增巨集定義

在Boardconfig.mk 中新增一個 IMAGE_FOR_FACTORY_TEST:= true 由於Boardconfig.mk和各目錄的Android.mk是相互關聯的 所以我們可以在Android.mk 中新增 一個 ifdef IMAGE_FOR_FACTO

_T 巨集定義

_T 是一個巨集定義,作用是讓你的程式支援 Unicode 編碼 因為 Windows 使用兩種字符集 ANSI 和 UNICODE前者就是通常使用的單位元組方式,但這種方式處理像中文這樣的雙位元組字元不方便,容易出現半個字元的情況,而後者都是雙位元組方式,方便處理雙位元組字元。Wind

巨集定義與符號常量

在C中,“巨集”分為無引數的巨集和有引數的巨集兩種 無參巨集定義 (1)無參巨集定義的一般格式:#define 識別符號 語言符號 字串 其中:"define"為巨集定義命令;"識別符號"為所定義的巨集名,通常用大寫字母表示,以便於與變數區別;“語言符號字串”可以是常數,表示式,