08--swift之類與結構體

1.簡介swift

c語言不一樣,在swift中結構體和類有相同的結構,都具備屬性和方法數組

可是不要求定義和實如今兩個文件中spa

2.類與結構體的對比指針

class CustomerManger {orm

var name:String!對象

var Pid:Int!繼承

}內存

var c1 = CustomerManger()//實例化字符串

struct Point {it

var x:Int

var y:Int

}

var p1 = Point(x: 2, y: 4)//實例化

3.類的屬性與調用

class Dog {

var name: String!

var age: Int!

init(){

name = "hua hua"

age = 3

}

func show(){

print("\(name),\(age)")

}

}

var d1 = Dog()

d1.show()//oc不一樣,swift調用方法是點語法


d1.name = "xiao hei"


d1.age = 5

d1.show()

4.結構體成員的默認構造器

struct Point {

var x:Int

var y:Int

}

var p1 = Point(x: 10, y: 20)//

print("\(p1.x),\(p1.y)")

5.結構體和枚舉都是值類型,賦值過程是值拷貝的

struct Point {

var X:Int

var y:Int


}

var p1 = Point(X: 10, y: 20)

var p2 = p1

print("\(p1.X),\(p1.y)")

print("\(p2.X),\(p2.y)")

print("--------")

p1.X = 100

p1.y = 200

print("\(p1.X).\(p1.y)")

print("\(p2.X),\(p2.y)")//p1值改變,而p2值不變

//實例

enum Direction {

case east,west,south,north

}

var d1 = Direction.east

var d2 = d1

print("\(d1)")

print("\(d2)")

print("---------")

d1 = .north

print("\(d1)")

print("\(d2)")

7.類是引用類型


class Dog {

var name: String

var age: Int

init(){

name = "hua hua "

age = 2

}

func show(){

print("\(name),\(age)")

}

}

var d1 = Dog()

var d2 = d1

d1.show()

d2.show()

print("----------")


d1.name = "xiao hei"

d1.age = 4

d1.show()

d2.show()//傳遞的是地址,因此值都改變

print(d1===d2)//是不是同一個對象,true

var d3 = Dog()

print(d1===d3)//false

注意:swift中,一個引用類型的實例與c語言中的指針相似,不一樣的是並非直接指向內存中的某個地址,

並且也不要求使用星號來代表在建立一個引用,swift中這些引用與其餘的常量或變量的定義方式相同

8.類與結構的選擇

結構體適用條件:

結構體主要目的是用來封裝少許相關簡單數據值,並且在實例的賦值或傳遞中,封裝的數據將會被拷貝而不是被引用。

結構體也沒有繼承這一特性

9.oc中,字符串,數組,字典都是以類的形式實現,而在swift中以值傳遞方式不一樣

相關文章
相關標籤/搜索