Swift學(xué)習(xí)_基本語(yǔ)法之枚舉&類&結(jié)構(gòu)體

Swift

1.枚舉

enum WeekDay1:Int {
    case Monday1 = 1
    case Tuesday1 = 2
    case Wednesday1 = 3
    case Thursday1 = 4
    case Friday1 = 5
}

enum WeekDay2:Int {
    case Monday2 = 1
    case Tuesday2
    case Wednesday2
    case Thursday2
    case Friday2
}

print(WeekDay1.Friday1)     // 打印   Friday1
print(WeekDay2.Friday2)     // 打印   Friday2

類和結(jié)構(gòu)體

在swift中類和結(jié)構(gòu)體類似,可以把結(jié)構(gòu)體理解成是一種輕量級(jí)的類,在swift中結(jié)構(gòu)體不僅可以定義成員變量還可以定義方法
類和結(jié)構(gòu)體具體類似的定義方式,分別使用關(guān)鍵字class和struct

class 類名{
    // 在這里定義類的內(nèi)容
}

struct 結(jié)構(gòu)體名 {
    // 在這里定義結(jié)構(gòu)體的內(nèi)容
}

1.類

1.類的定義
class Student{

    var number:Int = 0
    var name:String = ""
    var age:Int = 0
    var height:Int = 0
    var weight:Int = 0

    func demo() {
        print("我是一個(gè)學(xué)生")
    }
}
2.類的實(shí)例與訪問(wèn)
let stu = Student()
stu.name = "小明"
stu.age = 18
stu.demo()      // 打印   我是一個(gè)學(xué)生
print(stu.name)      // 打印   小明

2.結(jié)構(gòu)體

1.結(jié)構(gòu)體的定義
struct Person{

    var name:String = "張三"
    var age:Int = 20
}
2.結(jié)構(gòu)體的實(shí)例和訪問(wèn)
let per = Person()
print(per.name,per.age)     // 打印   張三 20

在swift中類是引用類型,和值類型不同,引用類型在被賦予到一個(gè)變量、常量或者被傳遞到一個(gè)函數(shù)時(shí),其值不會(huì)被拷貝,因此,引用的是已存在的實(shí)例本身而不是其拷貝。

如果結(jié)構(gòu)體和類的屬性沒(méi)有設(shè)置默認(rèn)值,那么必須使用結(jié)構(gòu)體和類的構(gòu)造函數(shù)來(lái)實(shí)例化結(jié)構(gòu)和類。

3.定義一個(gè)結(jié)構(gòu)體汽車
struct Car{

    var name:String
    var year:Int
    var color:String

    // 結(jié)構(gòu)體也可以定義方法
    func colorCar() -> String {
    
        return color
    }
}

var car = Car(name:"奔馳",year:2,color:"red")
// 這里使用逐一構(gòu)造函數(shù)為Car的結(jié)構(gòu)體賦屬性值,需要注意,這里所賦值必須要和結(jié)構(gòu)體中的成員順序一致。

// 結(jié)構(gòu)體的方法必須用實(shí)例調(diào)用
print(car.colorCar())       // 打印   red

結(jié)構(gòu)體是屬于值類型的,和類不一樣,類是術(shù)語(yǔ)引用類型,在swift中,整形、浮點(diǎn)型、布爾值、字符串、數(shù)組、字典都是值類型。

在swift中只有類是引用類型,其余一切都是值類型,所有結(jié)構(gòu)體的實(shí)例,以及實(shí)例中所包含的任何值類型屬性,在代碼中傳遞的時(shí)候都會(huì)被復(fù)制。

var car2 = car
car2.color = "green"    // 因?yàn)槭侵档目截?,不是引用所有car的color還是red,而car2是green了
print(car2.colorCar())       // 打印   green
print(car.colorCar())       // 打印   red

var student2 = stu
var student3 = Student()

if student2 === student3 {

    print("引用同一個(gè)實(shí)例")
}else{

    print("引用不同實(shí)例")       // 打印   引用不同實(shí)例
}

3.附:編程題

1.編寫一個(gè)求圓的面積函數(shù),并調(diào)用該函數(shù)求一個(gè)半徑為10的面積
func circleSquare(radius:Double) -> Double{

    let pi = 3.1415927
    return radius * radius * pi

}
print(circleSquare(radius: 10))      // 打印   314.15927
2.編寫一段程序,在程序中設(shè)計(jì)一個(gè)函數(shù),并調(diào)用這個(gè)函數(shù),實(shí)現(xiàn)輸出8的n次方的值
func calculateNumberProduct(n:Int) -> Int{

    let num = 8
    var total:Int = 1
    for _ in 1...n {
    
        total *= num
    }

    return total
}

print(calculateNumberProduct(n: 3))      // 打印   512

小結(jié)

代碼已上傳至git:
--> 傳送門:Swift_基本語(yǔ)法

附錄

查看完整專欄《Swift學(xué)習(xí)》

有問(wèn)題歡迎指正以及相互探討 —— CoderSun

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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