swift基礎(chǔ)_1

  • 注意:在創(chuàng)建Swift工程時,工程名不能與swift重名,因?yàn)楫?dāng)創(chuàng)建swift工程時,Xcode會自動導(dǎo)入swift類庫,一旦重名,Xcode將會找不到swift類庫,導(dǎo)致工程出錯

  • import Foundation//當(dāng)需要導(dǎo)入類庫時,使用import +類庫名,不用再加"<>"或者""
  • import Cocoa //引入此框架,可以寫入OC,C,C++語言
  • 在swift中,語句末尾可以不加";",但是當(dāng)在同一行書寫多條語句時,必須用";"隔開


  • Swift中變量和常量

  • 用let修飾常量:常量的值不可改變
  • 用var修飾變量:變量的值可以改變
  • 注意: 可使用漢字,字母,表情對常量變量進(jìn)行命名,名稱中不能含有數(shù)字符號,箭頭,無效的Unicode,橫線和制表符,且不能以數(shù)字開頭,盡管數(shù)字可以包含在名稱里,一旦完成聲明,就不能再次聲明相同名稱的變量或常量.或者改變它的類型.變量和常量也不能互換.
//1.定義常量:
let 常量 = "hello"http://常量的值不可以改變
let a = 1.333

let ?? = 1
print(??)

//2.定義變量
var 變量 = "oc"
變量 = "swift"http://變量的值可以修改
print(變量)

var b = 2.22
print(b);

var ?? = 555
print(??)

//3.在swift中,如果開始沒有給數(shù)據(jù)類型,swift會根據(jù)初始值自動判斷數(shù)據(jù)類型
//常量,變量的數(shù)據(jù)類型
let c:Int = 8//整型
let d:Float = 1.2//單精度浮點(diǎn)型
let e:Double = 2.22//雙精度浮點(diǎn)型
let f:String = "string"http://字符串類型,是有序集合,可看成Character類型的集合
let g:Character = "a"http://單個字符(使用雙引號)
let flag:Bool = true//布爾類型,只有true和false兩個值

// 數(shù)據(jù)類型的的轉(zhuǎn)換:值永遠(yuǎn)不會被隱式轉(zhuǎn)換為其他類型.如需轉(zhuǎn)換,請寫明
let h = String(d)

//可選類型:"?"表示可選類型
//賦初值:如果使用let修飾可選類型,賦初值
let second :String? = "d"
//不賦初值:如果使用var修飾可選類型,可不賦初值
var first:String? = "String"

Swift中的字符串

//1.定義字符串變量
var str1 = "hello 大家"
//2創(chuàng)建空變量字符串(下面兩種均為空字符串,且等價)
var empty_str = ""
var empty_str2 = String( )

//通過字符串對象的isEmpty 方法判斷是否為空
if(empty_str.isEmpty){
print("empty_str is empty")
}

//3字符串拼接
//創(chuàng)建字符串變量
var str2 = "http://'"
str2 += "www.baidu.com"
print(str2)

//4.獲取字符串長度
let count_str = "hello"
//獲取長度:".characters.count"單個字符的個數(shù)
let length = count_str.characters.count
print(length)

//5.字符串比較
let name1 = "jiajia"
let name2 = "gongjie"
if name1 == name2{
print("\(name1) equals \(name2)")//格式化輸出
}else{
print("not equal")
}

//6.字符串的插值
let num = 3.0
let NewNum = "\(num) *2.5 = \(num * 2.5)"http://插入了num值
print(NewNum)

Swift中的數(shù)組

  • swift數(shù)組中存儲的數(shù)據(jù)類型都必須是同一數(shù)據(jù)類型,如果想存儲不同數(shù)據(jù)類型,可以使用oc中的數(shù)組
  • 在swift中,使用let和var聲明一個數(shù)組
  • 數(shù)組需要指定類型,如果沒有指定,會根據(jù)數(shù)組的初值去推斷數(shù)據(jù)類型
//定義數(shù)組
//1.未給定數(shù)據(jù)類型
let nameArray:Array = ["大白","二百","三百"]//根據(jù)初值自動判斷數(shù)據(jù)類型
let nameArray1 = ["大白","二百","三百"]

//數(shù)組元素的訪問
print(nameArray[0])
print("元素1 = ",nameArray[0])
print("元素3 = ",nameArray[2])
print("元素3 \(nameArray[2]) ")

//2.給定數(shù)據(jù)類型
var ageArray:Array<Int> = [1,2,3]
print(ageArray)

//給定類型的空數(shù)組
let array = Array<String>()//定義一個字符串類型的空數(shù)組
let int_array = [Int]()//定義一個整型的空數(shù)組

//3.向數(shù)組中添加元素
//方法一;
ageArray.append(4)
print(ageArray)

//方法二:使用運(yùn)算符重載向數(shù)組中添加元素
ageArray += [5,6]
print(ageArray)

//4.向數(shù)組中某個位置插入元素
ageArray.insert(7, atIndex: 2)
print(ageArray)

//移除數(shù)組中第一個元素
ageArray.removeFirst()
print(ageArray)

//移除數(shù)組中最后一個元素
ageArray.removeLast()
print(ageArray);

//移除數(shù)組某個位置的元素
ageArray.removeAtIndex(3)
print(ageArray)

Swift中的字典

字典中所有的key和value的值必須是同一數(shù)據(jù)類型

//1.定義字典
let let_Dic :Dictionary = ["a":10]//不可變
print(let_Dic)
var var_Dic:Dictionary<String,Int> = ["b":12]//可變
print(var_Dic)

//定義一個空字典
var let_empty_Dic:Dictionary<String,Int> = [:]//如果初始值,沒有提供足夠的信息(或者沒有初始值),那么需要在變量后面聲明類型,用冒號分割
var var_empty_Dic:Dictionary<String,Int>
//2.向字典中添加一對鍵值
let_empty_Dic["c"] = 20
print(let_empty_Dic)

var var_Empty_Dic:Dictionary<String,Int> = [:]
var_Empty_Dic["d"] = 15
print(var_Empty_Dic)

//3.修改字典中的一對鍵值
var_Empty_Dic["d"] = 2
print(var_Empty_Dic);

//4.通過key去刪除鍵值
var_Empty_Dic.removeValueForKey("d")
print(var_Empty_Dic)

Swift中的元組

  • 元組:是一個數(shù)組類型,是一個可以返回多個值的數(shù)據(jù)格式
  • 在swift中,聲明元組的時候,用"()"
  • 元組可通過下標(biāo)訪問元組元素,也可通過key的值去訪問,類似C語言的結(jié)構(gòu)體,可以放對中數(shù)據(jù)形象
//1.定義一個元組
//方法一:直接初始化一個元組
let status = ("語言",["iOS","HTML5","Unity"])
//方法二:直接寫出數(shù)據(jù)類型
let NewStatus:(String,Array) = ("語言",["iOS","HTML5","Unity"])

//2.取出元組中值的方法
//方法一:直接賦值給常量,并通過使用標(biāo)記名來獲取對應(yīng)的值
let statu:(classRoom:String, couse:Array) = status
var classInfo = statu.classRoom + statu.couse[0] + statu.couse[1]
print(classInfo)


//方法二:通過下標(biāo)獲取元素的值
var classInfo1 = statu.0
print(classInfo1)

var classInfo2 = statu.0 + statu.1[0]
print(classInfo2)

Swift中的循環(huán)

swift中的循環(huán)結(jié)構(gòu)包括:for,for_in,while,repeat-while

//for循環(huán)
for  var i = 0; i < 10; i++ {
print("it's my life")
}

//for-in循環(huán)
for number in 1..<10 {
//"..<"開區(qū)間,表示1-9
    print(number)
}
for number in 1...10 {
//"..."閉區(qū)間,表示1-10
    print(number)
}

//while循環(huán)
var j = 5
while j > 0{
j--
    print(j)
}

//repeat-while循環(huán):先執(zhí)行一次循環(huán)體,再判斷條件(循環(huán)體至少被執(zhí)行一次)
repeat{
print("repeat...while")
}while 1 < 0

//循環(huán)遍歷數(shù)組
var animalsArray = ["dog","cat","pig","tiger"]
for a in animalsArray{
print(a)
}

//循環(huán)遍歷字典
var animalsDic = ["dog":"??","pig":"??"]
for (key,value) in animalsDic{
    print("key = \(key) , value = \(value)")
}

Swift中分支結(jié)構(gòu)####

swift中分支結(jié)構(gòu):if,if-else,switch...case
switch要求每個分支必須包含代碼

//if,if-else
let flag1 = true
if flag1 == true{//if...else...可以省略小括號
print("flagf = \(flag1)")
}else{
print("為假")
}

//switch...case(默認(rèn)自帶break)

let temp = 20
//特點(diǎn)一:switch中想要實(shí)現(xiàn)貫穿,使用關(guān)鍵字fallthrough,
switch temp{
case 0:
    print("0")
    fallthrough
case 10:
    print("10")
default:
    print("other")
}
//特點(diǎn)二:case后邊可以是定義一個變量,where后面是被定義變量需要滿足的條件
switch temp{
case var i where temp >= 0 && temp < 10:
    i = 20
    print(i)
default:
    print("other")
}

//特點(diǎn)三:case后面可以是一個范圍
switch temp{
case 0..<10:
     print("范圍在0-9,不包括10")
case 10...100:
    print("范圍在10-100,包括100")
default:
    print("other")
}

//特點(diǎn)四:switch...case可以匹配一個元組
let point = (10,10)
switch point{
case (10,0):
    print("case1")
case(0,10):
    print("case2")
case(10,10):
    print("case3")
default:
    print("other")
}

Swift中的枚舉

C語言中,枚舉類型的枚舉值和一個整形數(shù)值相對應(yīng),而swift中的枚舉類型更加了靈活,不必給每一個枚舉成員提供一個確定的枚舉值,如果給枚舉成員提供一個值(稱為"原始值"),則該值的類型可以是字符串,字符,或者一個整型值或浮點(diǎn)數(shù)

//定義一個枚舉值.枚舉類型為原始類型(String)
enum animal:String{
case cat = "??"
    case dog = "??"
    case duck = "鴨子"
}
print(animal.cat.rawValue)//rawValue打印原始值
print(animal.cat.hashValue)//hashValue打印哈希值

//使用原始值創(chuàng)建一個變量
var dir = animal(rawValue: "??")//表示取得是原始值為??的那個枚舉成員名.而成員的類型為animal
print(dir)

Swift中的函數(shù)

  • swift中里面用"func"表示聲明一個函數(shù)
  • swift的文件格式里面.沒有類似于oc的.h文件,所以,需要定義一個私有函數(shù),可在func前面加private修飾
  • 函數(shù)格式:
func 函數(shù)名(參數(shù)名:參數(shù)類型 , 參數(shù)名:參數(shù)類型 , .......) ->返回值類型{
實(shí)現(xiàn)內(nèi)容
return 返回值
}
//1.定義無參無返回值函數(shù)
func sayHi() ->Void{
print("Hi")
}

sayHi()
//2.有參無返回值函數(shù)
func sayHello(bay:String)->Void{
print(bay)
}
sayHello("hell0")

//3.無參有返回值
func money()->String{
return "No money"
}

let str = money()
print(str)

//4.有參有返回值
func number(a:Int,b:Int)->Int{
return a + b
}
var add = number(6, b: 7)
print(add)

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

func all(number:Int, number2:Int)->(Int, Int, Int, Int){
return (number + number2, number - number2, number * number2, number / number2)
}
let result = all(5, number2: 2)
print(result)

//6.內(nèi)參和外參
/*
swift中,一個參數(shù)有兩個名字,內(nèi)部參數(shù)名和外部參數(shù)名
內(nèi)部參數(shù)名:在函數(shù)內(nèi)部使用的參數(shù)名
外部參數(shù)名:在函數(shù)調(diào)用的時候,顯示的參數(shù)名稱
*/
func hero(first one:String, second tow:Int){
print(one, tow)//使用內(nèi)參
}
hero(first: "跑", second: 1)//顯示外參
/*
注意:
在默認(rèn)情況下,函數(shù)第一個參數(shù),不顯示外部參數(shù)名,其余參數(shù),顯示外部參數(shù)名,并且和內(nèi)部參數(shù)名一致
如果不想顯示外部參數(shù)名,可以使用下劃線省略,但是,函數(shù)的第一個參數(shù)不能使用"_"省略外部參數(shù)名
*/
func text(one:Int,_ two:Int){
print(one,two)
}
text(5, 0)
  • inout參數(shù)

函數(shù)參數(shù),如果不給數(shù)據(jù)類型,默認(rèn)為let,如果在參數(shù)前面加var,就可以修改參數(shù),但是如果參數(shù)前面加的是"inout"來修飾,就成了輸入輸出函數(shù),在函數(shù)內(nèi)部修改參數(shù),可影響到外部變量的值

var name = "豆豆"
func NewName(inout name:String){
name = "小花"http://修改name值
    print("name修改為:",name)
}
NewName(&name)//傳的是地址
print("修改后的值:",name)

//函數(shù)的嵌套
func outer(){
print("外部函數(shù)")
    func inside(){
    print("內(nèi)部函數(shù)")
    }
    inside()//在外部函數(shù)中調(diào)用內(nèi)部函數(shù)
}
outer()//在外部函數(shù)的外面,調(diào)用外部函數(shù)
```



####Swift中的空格
- swift中,不像C,C++,JAVA一樣,完全忽視空格,swift對空格有一定要求,

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

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

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