iOS開發Swift篇—(十)方法

一、簡單說明

跟其他面嚮對象語言一樣,Swift中的方法可以分爲2大類:

(1)實例方法(Instance Methods)

  在OC中,實例方法以減號(-)開頭

(2)類型方法(Type Methods)

  在OC中,類型方法以加號(+)開頭

 

二、實例方法

1.什麼是實例方法?

實例方法:就是隻能用對象實例調用的方法,也可以稱爲“對象方法”

實例方法的語法跟函數基本一樣

2.代碼示例:

複製代碼
1 class Dog {
2     func run() {
3         println("Dog--->run")
4     }
5 }
6 var d = Dog()
7 d.run()
複製代碼

說明

第2行定義了一個run方法

第7行調用run方法:調用方法也跟調用函數很像,格式是“對象名.方法名(參數)”

 

三、方法的參數

(1)方法和函數的參數有點區別,默認情況下

方法的第1個參數名僅僅是局部參數名

方法的其他參數名(除第1個參數名以外)既是局部參數名,又是外部參數名

複製代碼
1 class Calculator {
2     func sum(num1: Int, num2: Int) -> Int {
3         return num1 + num2
4     }
5 }
6 var c = Calculator()
7 c.sum(10, num2: 20)
複製代碼

說明

num1僅僅是局部參數名,num2既是局部參數名,又是外部參數名

相當於func sum(num1: Int, #num2: Int) -> Int

(2)可以在參數名前面加個下劃線 _,去掉默認的外部參數名

複製代碼
1 class Calculator {
2     func sum(num1: Int, _ num2: Int) -> Int {
3         return num1 + num2
4     }
5 }
6 var c = Calculator()
7 c.sum(10, 20)
複製代碼

說明:num1、num2都僅僅是局部參數名,不是外部參數名

(3)也可以給第1個參數增加外部參數名

複製代碼
1 class Calculator {
2     func sum(#num1: Int, num2: Int) -> Int {
3         return num1 + num2
4     }
5 }
6 var c = Calculator()
7 c.sum(num1: 10, num2: 20)
複製代碼

說明:num1、num2既是局部參數名,又是外部參數名

 

四、類型方法

1.什麼是類型方法?

  被關鍵字class修飾的方法,也可以稱爲“類方法”

1 class Calculator {
2     class func sum(num1: Int, num2: Int) -> Int {
3         return num1 + num2
4     }
5 }
6 Calculator.sum(10, num2: 20)

說明

第2行定義了一個類型方法

類型方法的特點:直接用類調用類型方法,不能用對象調用類型方法

第6行調用類型方法,格式是“類名.方法名(參數)”

注意:類型方法和實例方法的方法名可以一樣

複製代碼
 1 class Calculator {
 2     class func sum(num1: Int, num2: Int) -> Int {
 3         return num1 + num2
 4     }
 5     func sum(num1: Int, num2: Int) -> Int {
 6         return num1 + num2
 7     }
 8 }
 9 Calculator.sum(10, num2: 20)
10 var c = Calculator()
11 c.sum(10, num2: 20)
複製代碼

說明

第2行定義的類型方法和第5行定義的實例方法:方法名一樣

第9行使用類調用類型方法

第11行使用對象調用實例方法

 

五、self

1.簡單說明

在每個方法內部,都有個隱含的屬性self,它的作用跟Objective-C中self的用法基本一致

self代表的是什麼?誰調用這個方法,self就代表誰

(1)在實例方法中:self代表調用方法的某個對象

(2)在類型方法中:self代表調用方法的某個類

2.代碼示例

複製代碼
 1 class Person {
 2     class func run() {
 3         println("class func run")
 4     }
 5     func run() {
 6         println("func run")
 7     }
 8     class func test() {
 9         self.run();
10     }
11     func test() {
12         self.run();
13     }
14 }
15 var p = Person()
16 p.test()
17 Person.test()
發佈了22 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章