Swift基礎(chǔ)語(yǔ)法(-)

swift基礎(chǔ)語(yǔ)法可以在playground中編寫,這樣直接可以在右側(cè)看到結(jié)果,不需要運(yùn)行

新建playground

1.1標(biāo)識(shí)符

定義標(biāo)識(shí)符時(shí),必須指出是變量還是常量
格式:標(biāo)識(shí)符 : 類型
let定義常量,一旦定義就不可更改
var定義變量,可以更改

let age : Int = 30
let n : Double = 3.00
var age :Int = 30

變量和常量的命名

let pi = 3.13
let 你好 = "你好世界"
let ?? = "monkey"
let n123 = "sss"

在命名一個(gè)編程元素時(shí)英妓,要遵循下列命名規(guī)則:

  1. 名稱的第一個(gè)字符必須是字母或漢字唧垦。

  2. 不能在名稱中使用空格十拣、句點(diǎn)(.)、感嘆號(hào)(!)键俱、@、&、$、#等已有特殊含義的字符板惑。
    3.不能超過255個(gè)字符,控件笼蛛、窗體洒放、類和模塊的名字蛉鹿,不能超過40個(gè)字符滨砍。

  3. 不要與已有的關(guān)鍵字同名,否則妖异,在編程中會(huì)出現(xiàn)很多麻煩惋戏。

  4. 在自定義名稱時(shí),除了必須遵循VB的命名規(guī)則外他膳,還要使一個(gè)名字能反映它所代表的編程元素的意義
    注意:
    1.在開發(fā)中優(yōu)先使用常量,只有在需求更改的時(shí)候,在將let改為var
    2.常量的意思是:指向的對(duì)象不可修改,即指針不可修改,但是可以通過指針拿到對(duì)象,修改其中的屬性

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

    //在swift中使用枚舉類型,類型.具體的類型
    let btn : UIButton = UIButton(type: UIButtonType.ContactAdd)
    btn.center = CGPoint.init(x: 50, y: 50)
    view.addSubview(btn)

1.2Swift的類型推導(dǎo)

1.如果定義標(biāo)識(shí)符時(shí),直接賦值,那么標(biāo)識(shí)符后面的類型可以省略
2.Swift中有類型推導(dǎo),可以根據(jù)后面的賦值決定前面標(biāo)識(shí)符的數(shù)據(jù)類型
3.可以通過option + 鼠標(biāo)左鍵,進(jìn)行查看數(shù)據(jù)的類型


查看數(shù)據(jù)類型.png

2.Swift中的數(shù)據(jù)類型

Swift中數(shù)據(jù)類型.png

類型轉(zhuǎn)換:
1.將Double類型轉(zhuǎn)換為Int類型,Int(Double)
哎,前面截圖截到了,還要寫么,好糾結(jié)啊......寫,不寫,寫,不寫,算了還是寫吧~


1
let dou1 = Int(Double)

2.將Int轉(zhuǎn)換為String , Int(String)

let doub2 = String(dou1)

3.將String轉(zhuǎn)換為Float類型,String(Float)

let doub3 = Float(doub2)

格式我就不總結(jié)了........

3.判斷

3.1if 語(yǔ)句

要求:

1.判斷句可以不加()
2.判讀句必須有一個(gè)真假值(哦~,忘記說了,Swift中Bool類型,真為true,假為false)

格式:

if 條件 {    
    若條件為真則執(zhí)行這部分語(yǔ)句    
} else {           
    若條件為假則執(zhí)行這部分語(yǔ)句
}
看到這里你一定困了吧,我也困了,所有就不舉例子了,相信你也會(huì)的
3.2 guard

1.guard是swift2.0新增的語(yǔ)法,與if非常相似,其設(shè)計(jì)的目的是提高程序的可讀性
2.guard語(yǔ)句必須自帶其好基友else
格式:

guard 條件表達(dá)式 else{
     break
 }
語(yǔ)句組

語(yǔ)法:
1.當(dāng)條件表達(dá)式為true的時(shí)候,跳過else語(yǔ)句的內(nèi)容,直接執(zhí)行語(yǔ)句組
2.條件表達(dá)式為false的時(shí)候,執(zhí)行else語(yǔ)句的內(nèi)容,其跳轉(zhuǎn)語(yǔ)句一般為return ,break,continue和throw
3.guard在函數(shù)里面使用,不在函數(shù)里使用return ,break.....就不知道該干啥了

人吧,一困就懶,這個(gè)我也不想舉例子了....,但是我怕你直接關(guān)網(wǎng)頁(yè),這個(gè)威脅很厲害的,所有................

補(bǔ)充知識(shí):

swift中控制轉(zhuǎn)移關(guān)鍵詞:
break continue fallthrough return throw
1.return :可以結(jié)束一個(gè)循環(huán),或者函數(shù)
2.break語(yǔ)句將終止整個(gè)循環(huán)的執(zhí)行,可以在循環(huán)語(yǔ)句中,也可以用于switch語(yǔ)句中
3.continue:通常用于循環(huán)中,告訴循環(huán)停止現(xiàn)在執(zhí)行的語(yǔ)句,開始下一次循環(huán)

//func 函數(shù)名(標(biāo)示符: 類型) ->
func sleep(time: Int) -> Bool {
    guard time >= 22 else{
         //如果判斷就為假,會(huì)執(zhí)行else
        print("困著")//print后面會(huì)有自動(dòng)換行符的
        return true
    }
    //如果為真,繼續(xù)執(zhí)行
    print("睡覺")
    return false
}

sleep(20)

現(xiàn)在過20點(diǎn)了,因?yàn)槭褂玫氖莚eturn語(yǔ)句,所以只會(huì)說困著,所有困但是不讓走睡覺,這個(gè)男朋友當(dāng)?shù)牟恍?所有困了不讓睡覺一定是錯(cuò)的,女朋友可是會(huì)生氣的


2.png

正好對(duì)比下guard和if的區(qū)別

if語(yǔ)句
 for a in 0...4
 {
   if a == 2{
        continue
        print(a) //這條語(yǔ)句用戶不會(huì)被執(zhí)行   
    }
  print(a) //輸出0,1,,3,4    
}

guard語(yǔ)句
for a in 0...4{
    guard a != 2 else{
        continue
        print(a) //這條語(yǔ)句永遠(yuǎn)不會(huì)被用戶執(zhí)行

    }
  print(a) //輸出0,1,3,4   
}

break:

//if語(yǔ)句
for a in 0...3{
    if a == 2{
        break
     }
    print(a) //輸出0,1
}

//guard語(yǔ)句
  for a in 0...3{ 
    guard a != 2 else{
        print(a)
        break
    }
    print(a) //輸出0,1
}

你問我...什么意思,那就涉及令一個(gè)話題了,那個(gè)話題就是區(qū)間
區(qū)間分為開區(qū)間和畢區(qū)間
開區(qū)間: 0~10,包括0但是不包括10,跟數(shù)學(xué)中的開區(qū)間是不同的,這個(gè)是前畢后開的,[0,10], Swift中寫法就是0..<10(中間都不要空格,有空格就會(huì)報(bào)錯(cuò)的)
閉區(qū)間:0~10,包括0也包括10,是前閉后閉的,Swift中寫法 0...10

3.3 switch

先比較和OC中的不同:
1.switch后可以不加()
2.case后面可以不跟break,默認(rèn)會(huì)有break的
3.switch中要把所有情況都列舉出來(lái),不然會(huì)報(bào)錯(cuò)的

switch的基本用法:
let sex = 0
switch sex{
case 0:
    print("男") 
case 1:
    print("女")
default:
    print("未知")   
}
switch:case穿透

要實(shí)現(xiàn)這個(gè)效果,需要另外一個(gè)關(guān)鍵字fallthrough
fallthrough:由于switch中的switch語(yǔ)句不會(huì)自動(dòng)的因?yàn)闆]有break而跳轉(zhuǎn)下一個(gè)case,因此如果想要像C語(yǔ)言那樣,一次執(zhí)行每一個(gè)case就需要fallthrough

switch sex{
case 0:
   print("ddd")
   fallthrough
case 1:
    print("ssss")
default:
    print("")
 }
3.case中判斷多個(gè)條件
switch sex{
case 0, 1:
    print("正常")
default:
    print("")
}
4.判斷浮點(diǎn)型(OC中只能判斷基本數(shù)據(jù)類型)
let a = 3.14
switch a{
case 3.14:
    print("pi")
default:
    print("no pi")
}
5.判斷字符串
let a = "pi"
switch a{
case "pi":
    print("pi")
default:
     print("no pi")
}
6.判斷區(qū)間:
let score = 88
switch score {    
case 0..<60 :
    print("不及格")
case 60..<70:
    print("剛及格")
case 70..<90:
    print("良好")
case 90...100:
    print("優(yōu)秀")
default:
    print("錯(cuò)誤")
}
序號(hào)寫到哪里了,你不記得了吧,恩那太好了,我也不記得了,就隨便寫了~~~

4.循環(huán)

4.1 for循環(huán)

先說我們?cè)贠C中常規(guī)的寫法:

for (var i = 0 ; i < 10; i++){
    print(i)
}

相信你在Swift中這樣寫,編譯器一定會(huì)給你提示的,讓你改,因?yàn)樗X得寫得太繁瑣了
試試我們第二種寫法

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

還有一種寫法,當(dāng)我們不關(guān)心i是什么的時(shí)候,就直接可以使用'_'來(lái)代替'i'

 for _ in 0..<10{
      print("hello world")
}
4.2while循環(huán),跟OC中差別不大,不解釋
4.3do ....while循環(huán)
var s = 0
do {
s += 1;
print(s) 
}while (s == 10)

這樣寫,編譯器會(huì)給你提示,使用編譯器提示的就對(duì)了,do.....while正式改名為repeat......while了,還是原來(lái)的味道,還是原來(lái)的配方.

9.20更新
swift中跳出 雙層循環(huán):

findAnswer: for m in 1...300{

for n in 1...30{
    if m*m*m*m - n*n == 15*m*n{
        print(m , n)
        break findAnswer //跳出整個(gè)循環(huán),想當(dāng)與C語(yǔ)言中的goto語(yǔ)句不建議使用
    }
    
   }
}

switch case 中進(jìn)行解包

let point5 = (8,0)
switch point5 {

case (0,0):
    print ("It's origin")
case (let x , 0)://這種形式可以理解為任意x的值,y的值為0,與使用_忽略x值不同,把x的值賦給新生成的變量,下面可能使用這個(gè)變量
    print("It on the x-axis")
    print("The x value is \(x)")
//    fallthrough //可以跳進(jìn)下一個(gè)case 
case (0, let y):
    print("The y value is \(y)")
case (let x, let y):

break

}

where與模式匹配

let point4 = (3, 3)
switch point4{

case let (x, y) where x == y: //限制case所列出的模式
    print("It's on the line x == y")
case  let (x, y) where x == -y:
    print("It's on the line x == -y")
case let (x, y):
    print("It's just an ordinary point")
    print("The point is (\(x), \(y))")

  }

let age = 19
switch age{
case 10...19:
    print("You're a teenager")
default :
    print("You're not a teenager")
}

//模式樣放在前面等于的變量要放在后面  if case 用法
if case 10...19 = age{
    print("You're a teenager")
}

if case 10...19 = age where age > 18{

print("")
}
//
let vector = (4,0)
if case (let x, 0) = vector where x > 2 &&   x < 5{
   print("It's the vector")

}

//
for i in 1...100{
if i % 3 == 0{
    print(i)
  }
}

for case  let i in 1...100 where i % 3 == 0{
    print(i)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末响逢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子棕孙,更是在濱河造成了極大的恐慌舔亭,老刑警劉巖些膨,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钦铺,居然都是意外死亡订雾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門矛洞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洼哎,“玉大人,你說我怎么就攤上這事沼本∝停” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵抽兆,是天一觀的道長(zhǎng)识补。 經(jīng)常有香客問我,道長(zhǎng)郊丛,這世上最難降的妖魔是什么李请? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮厉熟,結(jié)果婚禮上导盅,老公的妹妹穿的比我還像新娘。我一直安慰自己揍瑟,他們只是感情好白翻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绢片,像睡著了一般滤馍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上底循,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天巢株,我揣著相機(jī)與錄音,去河邊找鬼熙涤。 笑死阁苞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祠挫。 我是一名探鬼主播那槽,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼等舔!你這毒婦竟也來(lái)了骚灸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤慌植,失蹤者是張志新(化名)和其女友劉穎甚牲,沒想到半個(gè)月后义郑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丈钙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年魔慷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片著恩。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡院尔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喉誊,到底是詐尸還是另有隱情邀摆,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布伍茄,位于F島的核電站栋盹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏敷矫。R本人自食惡果不足惜例获,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望曹仗。 院中可真熱鬧榨汤,春花似錦、人聲如沸怎茫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)轨蛤。三九已至蜜宪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祥山,已是汗流浹背圃验。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缝呕,地道東北人澳窑。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像岳颇,于是被迫代替她去往敵國(guó)和親照捡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颅湘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 還未更新完畢话侧,后面會(huì)持續(xù)增加內(nèi)容 常量&變量 什么是常量和變量 在Swift中規(guī)定:在定義一個(gè)標(biāo)識(shí)符時(shí)必須明確說明...
    chenfanfang閱讀 1,067評(píng)論 0 5
  • 本章將會(huì)介紹 控制流For-In 循環(huán)While 循環(huán)If 條件語(yǔ)句Switch 語(yǔ)句控制轉(zhuǎn)移語(yǔ)句 continu...
    寒橋閱讀 716評(píng)論 0 0
  • Swift 簡(jiǎn)介 查看Swift當(dāng)前版本 簡(jiǎn)介 Swift 語(yǔ)言由蘋果公司在 2014 年推出瞻鹏,用來(lái)撰寫 OS X...
    mian小爬閱讀 334評(píng)論 0 1
  • 簡(jiǎn)介 特點(diǎn)(1)優(yōu)于OC悲立,快速,安全(2)取消了預(yù)編譯指令包括宏定義(OC用的太多了)(3)取消了OC指針和不安全...
    洛洛愛吃肉閱讀 928評(píng)論 0 3
  • Swift 介紹 簡(jiǎn)介 Swift 語(yǔ)言由蘋果公司在 2014 年推出新博,用來(lái)撰寫 OS X 和 iOS 應(yīng)用程序 ...
    大L君閱讀 3,209評(píng)論 3 25