Swift學(xué)習(xí)筆記(結(jié)合代碼,實(shí)踐Tips)---Day1

//================Demo1--Day1=================

/**

*1.常量變量

*/

varstr ="Hello, playground"

print(str)

varmyStr ="Hello,Word"

myStr="王云鵬,你好啊"

letyourStr ="你是常量啊"http://常量不可以修改的

print(myStr)

/**

*2.類型推斷

*/

varint1 =9

//int1 = 10.0這樣的話會(huì)報(bào)錯(cuò),因?yàn)橹耙呀?jīng)判斷int1是整型了

//賦值的時(shí)候直接給定類型變量后面聲明類型,用冒號(hào)分割。

letint2:Int=9

//創(chuàng)建一個(gè)常量,顯式指定類型為Float并指定初始值為4。

letpractiseNumber:Float=4

/**

*3.類型轉(zhuǎn)換

*/

//值永遠(yuǎn)不會(huì)被隱式轉(zhuǎn)換為其他類型。如果你需要把一個(gè)值轉(zhuǎn)換成其他類型,請(qǐng)顯式轉(zhuǎn)換。

varlabel1 ="The width is"

varwidth=100

//var widthLabel1 = label1 + width這樣會(huì)報(bào)錯(cuò),因?yàn)閮烧哳愋筒唤y(tǒng)一,可以轉(zhuǎn)換下

//轉(zhuǎn)換的方式和OC不一樣。括號(hào)里面放的是被轉(zhuǎn)換的變量,類型不加括號(hào)

varwidthLabel1 =label1+String(width)

//練習(xí)

varwidth2 =200

//width2 = 1.0現(xiàn)在是不支持float的轉(zhuǎn)換下

varwidth3 =Float(width2)

//width3此時(shí)已經(jīng)是float類型的了

letthree =3

letpointOneFourOneFiveNine =0.14159

letpi =three+Int(pointOneFourOneFiveNine)

//有一種更簡(jiǎn)單的把值轉(zhuǎn)換成字符串的方法:把值寫(xiě)到括號(hào)中,并且在括號(hào)之前寫(xiě)一個(gè)反斜杠

varnum1 =12.00

varnum2 =13.00

varnum3:Int=Int(num1+num2)//這樣寫(xiě)也是可以的,嘿嘿,多多嘗試

//練習(xí):使用\()來(lái)把一個(gè)浮點(diǎn)計(jì)算轉(zhuǎn)換成字符串,并加上某人的名字,和他打個(gè)招呼。

print("你好,\(num1+num2)")

/**

*4.使用方括號(hào)[]來(lái)創(chuàng)建數(shù)組和字典,并使用下標(biāo)或者鍵(key)來(lái)訪問(wèn)元素。

*/

//數(shù)組

vararr1 = ["a","b","c","d"]

varnumStr =arr1[2]

print(arr1)

//字典

vardic1 = ["我的名字":"王云鵬",

"你的名字":"毛艷艷"]

varvalueMe =dic1["我的名字"]

varvalueYou =dic1["你的名字"]

varoccupations = [

"Malcolm":"Captain",

"Kaylee":"Mechanic",

]

occupations["Jayne"] ="Public Relations"http://這也算是一個(gè)鍵值對(duì)的賦值,類似于一個(gè)插入新的key-value的作用但是好像順序不是按照后來(lái)的在后面的順序,最后這個(gè)怎么在了中間??難道那個(gè)語(yǔ)法是起插入作用么??

print(occupations)

//要?jiǎng)?chuàng)建一個(gè)空數(shù)組或者字典,使用初始化語(yǔ)法。

vararr2 = []//這不也是創(chuàng)建一個(gè)空數(shù)組么??為什么要使用初始化語(yǔ)法呢?答案在下面

vartemptyArr1 = [String]()//初始化一個(gè)空的字符串?dāng)?shù)組

vartemptyArr2 = [Int]()//初始化一個(gè)空的整型數(shù)組

//初始化字典

letemptyDictionary = [String:Float]()

//如果類型信息可以被推斷出來(lái),你可以用[]和[:]來(lái)創(chuàng)建空數(shù)組和空字典——就像你聲明變量或者給函數(shù)傳參數(shù)的時(shí)候一樣。

vararr3NoItem = []

vardic1NoItem = [:]

/**

*5.控制流使用if和switch來(lái)進(jìn)行條件操作,使用for-in、for、while和do-while來(lái)進(jìn)行循環(huán)。包裹條件和循環(huán)變量括號(hào)可以省略,但是語(yǔ)句體的大括號(hào)是必須的。

*/

vararr3 = [12,13,14,15,16]

arr3.insert(17, atIndex:arr3.count)//插入一個(gè)

varteamScore =0

//快速枚舉forIn遍歷

forscoreinarr3{

ifscore >13{

teamScore+=3

}else{

}

}

print(teamScore)

//在if語(yǔ)句中,條件必須是一個(gè)布爾表達(dá)式——這意味著像if score { ... }這樣的代碼將報(bào)錯(cuò),而不會(huì)隱形地與0做對(duì)比。你可以一起使用if和let來(lái)處理值缺失的情況。有些變量的值是可選的。一個(gè)可選的值可能是一個(gè)具體的值或者是nil,表示值缺失。在類型后面加一個(gè)問(wèn)號(hào)來(lái)標(biāo)記這個(gè)變量的值是可選的。

//可選的,等于說(shuō)是雙份,不賦值的時(shí)候它就是個(gè)nil注意?一定要緊跟著類型,中間不要留空格,否則會(huì)報(bào)錯(cuò)

varoptionString1 :String? ="Hello"

print(optionString1=nil)

varoptionString2 :String?//這時(shí)候它就是個(gè)nil

//練習(xí)

varoptionName :String? ="王云鵬"

vargreeting ="hello"

ifletname =optionName{//這時(shí)候name有值了,表示條件為真啊

greeting="hello,\(greeting)"

}

//練習(xí)把optionalName改成nil,greeting會(huì)是什么?添加一個(gè)else語(yǔ)句,當(dāng)optionalName是nil時(shí)給greeting賦一個(gè)不同的值。

varoptionName1 :String?

vargreeting1 ="hello"

ifletname1 =optionName1{//無(wú)值。缺省為Nil

greeting="hello,\(greeting1)"

}else{

greeting="hello,\(greeting1)"

}

//switch貌似OC里面的switch只能比較各整型好像swift里面的switch支持任意類型的數(shù)據(jù)以及各種比較操作——不僅僅是整數(shù)以及測(cè)試相等。

letvegetable ="red papper"

switchvegetable{

case"red":

print("匹配錯(cuò)誤")

case"paper":

print("照樣匹配錯(cuò)誤")

case"red papper":

print("匹配正確")//匹配到的是這個(gè)

default:

print("匹配的亂七八糟")

}

//Tips:運(yùn)行switch中匹配到的子句之后,程序會(huì)退出switch語(yǔ)句,并不會(huì)繼續(xù)向下運(yùn)行,所以不需要在每個(gè)子句結(jié)尾寫(xiě)break。

//你可以使用for-in來(lái)遍歷字典,需要兩個(gè)變量來(lái)表示每個(gè)鍵值對(duì)。字典是一個(gè)無(wú)序的集合,所以他們的鍵和值以任意順序迭代結(jié)束。

varfunStrings = ["key1":["我的","毛的"],"key2":["它的","她的","他的"],"key3":["你的","那個(gè)人的"]]

//快速枚舉

for(key,content)infunStrings{

ifkey =="key1"{//判斷兩個(gè)字符串是否相等。直接這樣等號(hào)判斷對(duì)么??

print(content)

}elseifcontent.count==3{

print(key)

}

}

//使用while來(lái)重復(fù)運(yùn)行一段代碼直到不滿足條件。循環(huán)條件可以在開(kāi)頭也可以在結(jié)尾。

varn =0

varsum =0

whilen<100{

n+=1

sum+=n

}

print(sum)

//for循環(huán)你可以在循環(huán)中使用..<來(lái)表示范圍,也可以使用傳統(tǒng)的寫(xiě)法,兩者是等價(jià)的:

varn1 =0

forvari=0;i<5;++i{

n1+= i

}

print(n1)

varn2 =0

forqin0..<5{

n2+= q

}

print(n2)

/**

*函數(shù)和閉包使用func來(lái)聲明一個(gè)函數(shù),使用名字和參數(shù)來(lái)調(diào)用函數(shù)。使用->來(lái)指定函數(shù)返回值。

*無(wú)論是形參還是返回值,都是返回的變量名后面是冒號(hào)+類型

*/

//聲明函數(shù)

funcgreet(name:String,content:String) ->String{

return"Hello,\(name+content)"

}

//調(diào)用

varreturnValue:String=greet("王云鵬","給您請(qǐng)安了")

print(returnValue)

//使用元組來(lái)讓一個(gè)函數(shù)返回多個(gè)值。該元組的元素可以用名稱或數(shù)字來(lái)表示。

//[Int]這樣表示傳進(jìn)去實(shí)參是個(gè)數(shù)組,只不過(guò)是個(gè)整型的,字符串型的自己琢磨

funccalculateStatistics(scores:[Int]) ->(min:Int,max:Int,sum:Int){

varmin = scores[0]

varmax = scores[0]

varsum =0

forscoreinscores {

ifscore > max {

max = score

}elseifscore < min {

min = score

}

sum += score

}

return(min, max, sum)

}

varitems =calculateStatistics([12,13,45,9,10])

print(items.sum)

print(items.2)

//函數(shù)可以帶有可變個(gè)數(shù)的參數(shù),這些參數(shù)在函數(shù)內(nèi)表現(xiàn)為數(shù)組的形式:

funcmaybeChange(values:Int...) ->Int{

varsum =0

forvalueinvalues{

sum += value

}

returnsum

}

maybeChange()

maybeChange(21,23,57)

//練習(xí)練習(xí):寫(xiě)一個(gè)計(jì)算參數(shù)平均值的函數(shù)。

funcgetAverage(numbers:[Int]) ->Float{

varaverage =0

varsum =0

fornumberinnumbers{

sum += number

}

returnFloat(sum) /Float(numbers.count)

}

getAverage([1,2,3,4,5,6])

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容