每日一問15——swift基礎(01)

一直使用objective-c進行開發,今天終于下定決心好好學習一下swift。學習后還是感覺到swift在使用上的方便之處。于是在此做一個筆記加深記憶。

常量與變量

聲明基本數據類型

在objective-c中聲明變量格式: 類型 變量名 = 值

int a = 10; 

在swift中 : var/let 變量名 : 類型 = 值
其中var代表變量,let代表常量。常量的是不可以不修改的。

var a : Int = 2
a = 10;//正確

let b : Int = 1
b = 10; //錯誤

值得一提的是let聲明的常量在內存上保存的地址不能發生改變,所以我們無法對let常量重新賦值。

或許你已經注意到了,這樣聲明swift貌似比oc更加麻煩,但swift厲害之處就在于它可以推測類型。

let a = 2 //系統自動轉換為Int類型
let b = 2.23 //系統自動轉換為Double類型
基本類型轉換

在objective中,當我們使用兩個不同類型的變量運算時,系統會采取隱式轉換將類型統一。

int a = 1;
float b = 2.2;
int c = a + b; // c=3

但在swift中,系統并不會隱式轉換,所以當兩個不同類型的變量運算時,編譯器會報錯。我們需要手動的去做類型轉換。

let x :Int = 1
let y :Double = 2.31
let z = x + Int(y)

我們需要使用: 類型(變量) 的方式來進行類型轉換

非基本數據類型
聲明一個UiView的對象,并修改背景顏色

objective-c中

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
view.backgroundColor = [UIColor redColor];

swift中:

let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let view : UIView = UIView(frame: rect)
view.backgroundColor = UIColor.brown

可以看到swift中不支持以前的CGRectMake方法,而使用CGRect(參數名:參數...)的方式初始化,同樣在初始化view的時候也是調用UIView:(參數名:參數...)的方式代替oc中的initWithFrame:函數

條件判斷語句

與objective-c最大的不同是,swift在做條件判斷的時候不支持(非0/nil)這樣的判斷。

let i = 1
if i {  //這樣是不行的
}

if i == 1 { //這樣才可以
}
guard關鍵字

guard關鍵是swift新引入的一種寫法,它必須和else連用

let age = 20;
func online(age : Int) {
    guard age > 18 else {
        print("error")
        return
    }
    print("ok")
}

如果滿足條件,會直接跳過{}執行后面代碼,如果不滿足則會執行else里的內容。使用它的好處在于可以讓我們的代碼可讀性更高。

switch關鍵字

和objective-c不同
1.swift中不需要在case中寫break。
2.可以支持多個條件的判斷
3.支持區間

let age = 20;
switch age {
case 2:
    print("小孩子")
    fallthrough
case 10,19:
    print("少年郎")
case 20...30:
    print("工作狗")
default:
     print("有問題")
}

case1.如果希望執行完case后繼續執行,可以添加fallthrough關鍵字
case2.使用,分割來表示多個條件判斷
case3.判斷是否在區間 20...30 等于 x >= 20 && x <= 30,也支持半開半閉區間20..<30 等于x > 20 && x <30

循環語句

for循環是我們使用得最多的循環語句了,在swift3.0以后for循環只支持區間遍歷

for i in 0..<10 {
    print(i)
}

//oc中
for (int i = 0; i < 10; i++) {
    print(i)
}

當循環體內不需要使用i時,我們還可以用_代替。

for _ in 0..<10 {
    print("遍歷10次")
}

while循環和oc種差不多,只是省略了判斷語句的括弧

var num = 1
while num <= 10{
    num += 1 //swift中不支持使用++運算符
    print(num)
}

這里有個注意點,swift中不支持使用++運算符。

do...while循環在swift中使用repeat關鍵字代替do

var num = 10
repeat {
    num -= 1
    print(num)
} while num > 0
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容