
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