10--swift之方法

1.方法簡介swift

方法是和類,結構體,枚舉相關聯的函數,放到內部的叫方法,外面的叫函數,與oc不一樣,在swift中,類,結構體,枚舉都能定義方法。ide

swift方法能夠分爲實例方法和類型方法,實例方法必須經過實例才能訪問,類型方法能夠經過類名稱就可以訪問。函數

2.實例方法spa

func f2(){//叫函數orm

print("-----")it

}class

struct Point {變量

var x:Int方法

var y:Intim

func f1(){//叫方法

print("------")

}

}

//實例

class SomeClass {

var a1:Int!

var s1:String!

func set(a:Int,s:String){

a1 = a

s1 = s

}

func compute(){

let a = [2,3,5,4]

for e in a{

print(e)

}

}


}

var s = SomeClass()

s.set(20, s: "tom")

print(s.a1)

print(s.s1)

s.compute()

//實例

class MyClass {

var v:Int = 100

func f1(){

print("f1")


}

func f2(){

print(v)

f1()//f1f2是並列的,能夠調用外部的變量和方法

}

}

//實例都有本身的一份拷貝

class Cat {

var name: String!

var age: Int!

func show(){

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

}

}

var c1 = Cat()

c1.name = "jale"

c1.age = 2

c1.show()

var c2 = Cat()

c2.name = "kate"

c2.age = 4

c2.show()

//實例

class Dog {

var name: String!

var age: Int!

func eat(){

print("-----")

}

func play(){

print("play")

}

func sleep(){

print("sleep")


}

func all(){

eat()

play()

sleep()

}

func show(){

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

}

}

var d1 = Dog()

d1.name = "hua hua"

d1.age = 3

var d2 = Dog()

d2.name = "xiao hei"

d2.age = 5

d1.show()

d1.all()

d2.show()

d2.all()

局部參數和外部參數

//name1,age1是內部參數。set方法第一個默認沒有外部參數

class Animal {

var name:String!

var age:Int!

func set(name1:String,age1:Int){

name = name1

age = age1


}

func f1(a1 a:Int,b1 b:Int,c1 c:Int ){

let sum = a + b +c

print(sum)

}

func f2(a:Int,_ b: Int,_ c:Int){

let sum = a + b + c

print(sum)

}

func show(){

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

}

}

var a = Animal()

a.set("hua hua", age1: 3)//在調用時age1是外部參數名,跟內部參數名同樣,第一個默認沒有外部參數

a.show()

a.f1(a1:2b1:3,c1:4)//f1a,b,c都是內部參數,而a1,b1,c1都是外部參數

a.f2(1,2,3)//參數名前加上下劃線,調用時名稱能夠省略

2.實例——self

class Animal {

var name: String!

var age: Int!

func set(name1: String,age1:Int){

//        name = name1

//        age = age1

self.name = name1

self.age = age1

}

func show(){

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

}

}

var cat = Animal()


cat.set("nua nua", age1: 3)

cat.show()

var dog = Animal()


dog.set("tom", age1: 4)

dog.show()

3.在實例方法中修改值類型

結構體和枚舉是值類型,通常值類型的屬性不能在他的實例方法中被修改

可是,能夠選擇變異(mutating),而後能夠從內部改變他的屬性

struct Point {

var x:Int!

var y:Int!

//mutating

mutating func set(x1: Int,y1: Int){

//x = x1

//y = y1

self = Point(x: x1,y: y1)

}

}

3.類型方法



//靜態方法只能調用靜態方法和變量,實例方法能夠經過類名稱直接調用靜態方法和變量

class MyClass {

var i1: Int!

var s1: String!

static var c1: String!

static func f1(){

print("f1..")


}


//f2能夠被子類重寫

class func f2() {

print("f2..")

}

func f3(){

print("f3")

}


}

MyClass.f1()//能夠經過類名稱直接調用

class SubClass:MyClass{

override class func f2(){

print("f...f")

}//class 方法能夠被重寫,但必須加上class

override func f3(){

print("f111")

}//實例方法能夠被重寫

}

相關文章
相關標籤/搜索