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

1.基本定義

//1. swift中如何導(dǎo)入框架import UIKit

//2.如何定義標(biāo)識(shí)符

// swift中定義標(biāo)識(shí)符必須告訴編譯器是常量還是變量let聲明常量惯驼、var聲明變量

//按住option鍵+鼠標(biāo)左鍵查看變量的類型

leta :Int=20//有些使用常量多矮,(更加安全)

varb :Double=1.44

b=2.33

// 3.如果一行中只有一條語(yǔ)句盟广,那么該語(yǔ)句結(jié)束后可以不加; ,如果一行中有多條語(yǔ)句拭宁,那么以;分割

//4.打印內(nèi)容

print(a)

print(b)

//常量的使用注意

letm =10

//創(chuàng)建一個(gè)對(duì)象

varview :UIView=UIView()

//view = UIView()錯(cuò)誤的寫法

view.backgroundColor=UIColor.red

view.frame(forAlignmentRect: )

// Swift基本運(yùn)算必須保證類型一致否則會(huì)報(bào)錯(cuò)因?yàn)镾wift沒(méi)有隱試轉(zhuǎn)換

lettempM =Double(m)//強(qiáng)制類型轉(zhuǎn)換

2.邏輯分支的使用

////增加guard

//// 1 . if else判斷語(yǔ)句不在有非0/nil即真厌均,判斷語(yǔ)句必須有明確的真假Boll-- ture/false

//var i = 0

//? if i > 0? {

// ? print("a > 0")

//? } else {

//??? print("a < 0")

//? }

// 2 .三目運(yùn)算符

//let m = 20

//let n = 10

//

//let result = m > n ? m : n

// guard的使用2.0以后才有的有g(shù)uard必須有else它必須在函數(shù)中使用里面必須要加return或break關(guān)鍵字

letage =20

leta =18

funconline(age:Int) {

guardage >=18else{

print("回家找媽媽")

return

}

guarda>=18else{

print("qian")

return

}

print("liu")

}

online(age:age)

letsex =0

// 1. switch后面的()可以省略梅肤,case語(yǔ)句結(jié)束后身坐,break可以省略

//switch sex {

//case 0:

//??? print("nan")

//

//default:

//??? print("nv")

//}

//基本用法的補(bǔ)充

// 1.如果系統(tǒng)某一個(gè)case中產(chǎn)生case穿透,可以在case結(jié)束后跟上fallthrough

// 2.cass后面可以判斷多個(gè)條件

switchsex{

case0,1,2:

print("nan")

default:

print("nv")

}

// 3. switch還可以判斷浮點(diǎn)型以及字符串

leta =3.14

varresult? =0

switcha{

case3.14:

print("P")

default:

print("M")

}

letm? =10

letn? =20

letstr ="+"

switchstr{

case"+":

result=m+n

case"-":

result=m-n

default:

print("非法操作")

}

//3.3 switch可以判斷區(qū)間開(kāi)區(qū)間0..<20 0~19閉區(qū)間0...20 0 ~20

letscore =88

switchscore{

case0..<60:

print("不及格")

case60..<70:

print("及格")

case70..<80:

print("中等")

case80...100:

print("優(yōu)秀")

default:

print("不存咋")

}

3.循環(huán)的使用

// for in寫法

foriin0..<10{

print(i)

}

// for in寫法(特殊)如果標(biāo)識(shí)符不需要使用蛋叼,可以使用_來(lái)代替for i in 0...9焊傅、

//for i in 0...9 {

//??? print("hello world")

//}

for_in0...9{

print("hello world")

}

//2.while循環(huán)使用

vara =10

whilea>0{

print(a)

a-=1

}

//do while 用repeat 代替

repeat{

a+=1

print(a)

}whilea<10

1.字符串的使用

// 1.定義字符串

letstr ="Hello World"

//2.遍歷字符串

forcinstr.characters{

print(c)

}

//3.字符串的拼接

letname? ="liumu"

letname1 ="LM"

letname2 =name+name1

//3.1字符串和其他標(biāo)識(shí)符之間的拼接

letage =18

letheight =1.88

letinfo ="my name is\(name),my age is\(age),my height is\(height)"

//3.3拼接字符串時(shí),字符串的格式化

letmin =2

letsecond =8

lettimeString =String(format:"%02d:%02d",arguments: [min,second])

//4.字符串的截取

leturlString ="www.520lm.com"

//先將它轉(zhuǎn)換成NSString類型(urlString as NSString)

letheaser = (urlStringasNSString).substring(to:3)

2.數(shù)組的使用

//1.定義數(shù)組

//1.1定義不可變數(shù)組狈涮,使用let來(lái)定義狐胎,

letarray = ["mu","huan","ming","gggg"]

//1.2定義可變數(shù)組,使用var來(lái)定義歌馍,

vararrayM =Array()//創(chuàng)建可變數(shù)組

vararrayM1 = [String]()//創(chuàng)建可變數(shù)組

//2.對(duì)可變數(shù)組操作

//增加

arrayM.append("ggg")

arrayM.append("kkk")

arrayM.append("jjj")

arrayM.append("ggg")

arrayM.append("kkk")

arrayM.append("jjj")

arrayM.append("ggg")

arrayM.append("kkk")

arrayM.append("jjj")

//刪除

arrayM.remove(at:0)

//修改

arrayM[0] ="hjk"

//取出

arrayM[0]

//3.數(shù)組遍歷

foriin0..

print(arrayM[i])

}

fornameinarrayM{

print(name)

}

//遍歷前兩個(gè)元素

fornameinarrayM[0..<2] {

print(name)

}

//4.數(shù)組合并

letresultArr =array+arrayM//相同類型才能夠相加合并

//5.數(shù)組排序

arrayM.sort()//升序

3.字典的使用

//1.定義字典

//1.1定義不可變字典握巢,使用let來(lái)定義,

letdict:[String:Any] = ["name":"liumu","age":"20","height":5]

//1.2定義可變字典骆姐,使用var來(lái)定義镜粤,

//var dictM = Dictionary()

vardictM = [String:AnyObject]()//初始化可變數(shù)組

vardictMr? = [String:AnyObject]()

//2.對(duì)可變字典的操作

dictM["name"] ="liumu"asAnyObject?

dictM["sex"] ="nan"asAnyObject?

dictM.removeValue(forKey:“name")

dictM["name"] ="lm"asAnyObject?

dictM["sex"]

//3.遍歷字典

forkeyindictM.keys{

print(key)

}

forvalueindictM.values{

print(value)

}

for(key,value)indictM{

print(key ,"=",value)

}

//4.合并字典

//即使類型一致也不能相加合并

for(key,value)indict{

dictM[key] = valueasAnyObject?

}

字典轉(zhuǎn)換為數(shù)組

你可以提取字典的鍵值(key-value)對(duì)捏题,并轉(zhuǎn)換為獨(dú)立的數(shù)組。實(shí)例如下:

varsomeDict:[Int:String]=[1:"One",2:"Two",3:"Three"]letdictKeys=[Int](someDict.keys)letdictValues=[String](someDict.values)print("輸出字典的鍵(key)")for(key)indictKeys{print("\(key)")}print("輸出字典的值(value)")for(value)indictValues{print("\(value)")}

isEmpty 屬性

Y我們可以通過(guò)只讀屬性isEmpty來(lái)判斷字典是否為空肉渴,返回布爾值:

importCocoavarsomeDict1:[Int:String]=[1:"One",2:"Two",3:"Three"]varsomeDict2:[Int:String]=[4:"Four",5:"Five"]varsomeDict3:[Int:String]=[Int:String]()print("someDict1 = \(someDict1.isEmpty)")print("someDict2 = \(someDict2.isEmpty)")print("someDict3 = \(someDict3.isEmpty)")

以上程序執(zhí)行輸出結(jié)果為:

someDict1=falsesomeDict2=falsesomeDict3=true

4.元組的使用

//元組的定義(元組一般作為方法等返回值)

letarray:[Any] = ["why",28,1.88]

letinfo = ("why",18,1.88)

info.0//可以給元組的元素取別名

letinfo1 = (name:"why",age:18,height:1.88)

info1.name

//元素的別名就是元組的名稱

let(name,age,height) = ("lll",14,1.88)

5.可選類型的使用

//Swift中規(guī)定公荧,對(duì)象中的任何屬性在創(chuàng)建對(duì)象時(shí),都必須有明確的初始值

//1.可選類型的定義

//1.1常規(guī)方式(不常用)

//var name : Optional = nil

//1.2語(yǔ)法糖

varname :String? =nil//可選類型

// 2.給可選類型賦值

name="liumu"

// 3.取出可選類型的值

print(name!)//強(qiáng)制解包

//4.注意:強(qiáng)制解包是非常危險(xiǎn)的動(dòng)作同规,如果可選類型為nil循狰,系統(tǒng)會(huì)蹦掉,建議先判斷可選類型的值

ifname!=nil{

print(name!)

}

//5.可選綁定

//1.判斷name是否有值,如果沒(méi)有值券勺,直接不執(zhí)行{}

//2.如果name有值绪钥,系統(tǒng)會(huì)自動(dòng)將name解包,并且把解包后的結(jié)果復(fù)值給tempName

//寫法一(不常用)

iflettempName =name{

print(tempName)

}

//寫法二(不常用)

ifletname =name{

print(name)

}

//4.可選類型的應(yīng)用場(chǎng)景

// 4.1通過(guò)字符串創(chuàng)建一個(gè)NSURL對(duì)象

leturl:URL? =URL(string:"http://www.520.com")

ifleturl =url{

letrequest =NSURLRequest(url: url)

}

5.函數(shù)的定義

//func函數(shù)名(參數(shù))->返回值(如果沒(méi)有返回值Viod V大寫){代碼塊return返回值}

// 1.沒(méi)有參數(shù)沒(méi)有返回值

funcabout() ->Void{

print("iphoe7")

}

about()

funcabout1() {

print("iphoe7")

}

// 2.沒(méi)有參數(shù)有返回值

funcreadMeassage() ->String{

return"吃飯了嗎"

}

readMeassage()

// 3.有參數(shù)沒(méi)有返回值

funccallPhone(phoneName:String) {

//??? print("打電話給"+phoneName)

print("打電話給\(phoneName)")

}

callPhone(phoneName:"123456")

// 4.有參數(shù)有返回值

funcsum(num1 :Int,num2 :Int) ->Int{

returnnum1 + num2

}

sum(num1:12, num2:24)


5.1函數(shù)的使用注意

//注意一:內(nèi)部參數(shù)关炼,和外部參數(shù)

// 內(nèi)部參數(shù):在函數(shù)內(nèi)部可以看到的參數(shù)就是內(nèi)部參數(shù)程腹,默認(rèn)情況下所有的參數(shù)都是內(nèi)部參數(shù)

// 外部參數(shù):在函數(shù)外部可以看到的參數(shù)名稱就是外部參數(shù),3.0之前默認(rèn)從第二個(gè)參數(shù)開(kāi)始即是內(nèi)部參數(shù)也是外部參數(shù)儒拂,3.0后 從第一個(gè)開(kāi)始即是內(nèi)部參數(shù)也是外部參數(shù)

// 注意二:swift中默認(rèn)參數(shù)

func makeCoffee(coffName:String = "雀巢") -> String {

return"制作了一杯 \(coffName)咖啡"

}

makeCoffee(coffName: "貓屎")

makeCoffee()

//注意三 :可變參數(shù)

func sum(num : Int...) -> Int {

var? result = 0

for n in num {

result += n ? ? //Swift3.0 ?以后取消了 ++寸潦,-- 語(yǔ)法

}

return result

}

sum(num: 2,3,4,5,6)

//注意四:指針類型

//注意五:函數(shù)的嵌套使用

func test () {

func demo() {

print("demo")

}

print("----")

demo()

}

test()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市社痛,隨后出現(xiàn)的幾起案子见转,更是在濱河造成了極大的恐慌,老刑警劉巖蒜哀,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斩箫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡撵儿,警方通過(guò)查閱死者的電腦和手機(jī)乘客,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)统倒,“玉大人寨典,你說(shuō)我怎么就攤上這事》看遥” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵报亩,是天一觀的道長(zhǎng)浴鸿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)弦追,這世上最難降的妖魔是什么岳链? 我笑而不...
    開(kāi)封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮劲件,結(jié)果婚禮上掸哑,老公的妹妹穿的比我還像新娘约急。我一直安慰自己,他們只是感情好苗分,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布厌蔽。 她就那樣靜靜地躺著,像睡著了一般摔癣。 火紅的嫁衣襯著肌膚如雪奴饮。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天择浊,我揣著相機(jī)與錄音戴卜,去河邊找鬼。 笑死琢岩,一個(gè)胖子當(dāng)著我的面吹牛投剥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播担孔,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼薇缅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了攒磨?” 一聲冷哼從身側(cè)響起泳桦,我...
    開(kāi)封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娩缰,沒(méi)想到半個(gè)月后灸撰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拼坎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年浮毯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泰鸡。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡债蓝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盛龄,到底是詐尸還是另有隱情饰迹,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布余舶,位于F島的核電站啊鸭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏匿值。R本人自食惡果不足惜赠制,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挟憔。 院中可真熱鬧钟些,春花似錦烟号、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至抚垃,卻和暖如春喷楣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹤树。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工铣焊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罕伯。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓曲伊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親追他。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坟募,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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