SWIFT4.0學習01 - 函式的命名、呼叫以及注意事項
阿新 • • 發佈:2018-12-09
swift語法中函式的使用大概分為以下幾種:
- swift中函式的命名格式
- 無返回值函式
- 有引數有返回值的函式
- 多個返回值的函式
- 如何定義外部引數名
- 如何忽略引數名
- 如何給引數設定預設值
- 如何定義可變引數
- 修改外部引數的值,Inout關鍵字的使用
- 函式的型別
- 函式型別作為引數
- 函式型別作為返回值
廢話不說,直接上程式碼:
-
swift中函式的命名格式
-
-
func <#name#>(<#parameters#>) -> <#return type#> { <#function body#> }
- <#name#> : 函式名稱(可以使用中文命名)
- <#parameters#> : 引數 (引數名:引數型別 -> number:Int)
- <#return type#> : 函式返回值型別
- <#function body#> : 函式體
-
-
無返回值函式
-
-
func 無返回值() { print("無返回值函式") }
-
-
有引數有返回值的函式
-
-
override func viewDidLoad() { super.viewDidLoad() let sum = 有引數有返回值(numberOne: 1, numberTwo: 2) print(sum) } func 有引數有返回值(numberOne:Int, numberTwo:Int) -> Int { return numberOne + numberTwo }
-
-
多個返回值的函式
-
-
override func viewDidLoad() { super.viewDidLoad() let (sub, sum) = 有多組返回值(numberOne: 10, numberTwo: 2) print(sub,sum) } func 有多組返回值(numberOne:Int, numberTwo:Int) -> (sub:Int , sum:Int) { return ((numberOne-numberTwo),(numberOne+numberTwo)) }
-
-
如何定義外部引數名
-
- 未定義外部引數
override func viewDidLoad() { super.viewDidLoad() let str = 未定義外部引數名(strOne: "雞", strTwo: "肋") print(str) } func 未定義外部引數名(strOne:String,strTwo:String) -> String { return strOne+strTwo }
- 未定義外部引數
-
- 定義了外部引數 這樣調整即可: func 函式名:(引數名:引數型別)->返回值,調整為 func 函式名:(外部引數名 引數名:引數型別)->返回值
override func viewDidLoad() { super.viewDidLoad() let str = 定義外部引數名(frist: "雞", second: "肋") print(str) } func 定義外部引數名(frist strOne:String, second strTwo:String) -> String { return strOne+strTwo }
- 定義了外部引數 這樣調整即可: func 函式名:(引數名:引數型別)->返回值,調整為 func 函式名:(外部引數名 引數名:引數型別)->返回值
- 如何忽略引數名
- 定義了外部引數 這樣調整即可: func 函式名:(引數名:引數型別)->返回值,調整為 func 函式名:(_ 引數名:引數型別)->返回值
override func viewDidLoad() { super.viewDidLoad() let str = 忽略引數名("雞", "肋") print(str) } func 忽略引數名(_ strOne:String,_ strTwo:String) -> String { return strOne+strTwo }
- 定義了外部引數 這樣調整即可: func 函式名:(引數名:引數型別)->返回值,調整為 func 函式名:(_ 引數名:引數型別)->返回值
- 如何給引數設定預設值
-
override func viewDidLoad() { super.viewDidLoad() let str = 給引數設定預設值(strOne: "!") print(str) } func 給引數設定預設值(strOne:String,strTwo:String = "雞", strThree:String = "肋") -> String { return strOne+strTwo+strThree }
- 注意事項: 將帶有預設值的引數,放在引數列表的最後面!!!
-
- 如何自定義引數的數量
- 不確定輸入引數個數時,可以在引數型別後加上...來自定義引數數量
override func viewDidLoad() { super.viewDidLoad() let a = 自定義引數的數量(argNumbers: 1,2,3) print(a) let b = 自定義引數的數量(argNumbers: 1,2,3,4) print(b) } func 自定義引數的數量(argNumbers:Int...) -> Int { var sum = 0 for number in argNumbers { sum += number } return sum }
- 不確定輸入引數個數時,可以在引數型別後加上...來自定義引數數量
-
注意事項: 一個函式最多隻能有一個引數數量被自定義,且放在引數列表的最後!!!
- 通過函式方法,修改外部參入引數的值
-
override func viewDidLoad() { super.viewDidLoad() var a = 1 var b = 2 修改參入的外部引數值(numOne: &a, numTwo: &b) print(a,b) } func 修改參入的外部引數值(numOne: inout Int, numTwo: inout Int){ let temp = numOne numOne = numTwo numTwo = temp }
- 注意事項: 1>inout修飾的引數不能有預設值;2>呼叫函式時,傳入的引數必須是變數!!!
-
- 函式的型別
- 函式型別的格式: 函式的引數型別和返回值型別組成,例如下面的函式型別為: (String,String,String)->String
func 給引數設定預設值(strOne:String,strTwo:String = "雞", strThree:String = "肋") -> String { return strOne+strTwo+strThree }
- 賦值函式功能 例如: 下面函式最終列印結果:testtesttest
override func viewDidLoad() { super.viewDidLoad() let 函式賦值的載體:(String , String, String)->String = 給引數設定預設值(strOne:strTwo:strThree:) let str = 函式賦值的載體("test", "test", "test") print(str) } func 給引數設定預設值(strOne:String,strTwo:String = "雞", strThree:String = "肋") -> String { return strOne+strTwo+strThree }
- 函式型別的格式: 函式的引數型別和返回值型別組成,例如下面的函式型別為: (String,String,String)->String
- 函式型別做為引數
- print(result)最終列印結果為3
override func viewDidLoad() { super.viewDidLoad() //呼叫 operationResult(funParam: 函式型別作為引數(numOne:numTwo:), numOne: 1, numTwo: 2) } //準備的函式型別 func 函式型別作為引數(numOne:Int, numTwo:Int) -> Int { return numOne+numTwo } //operationResult 只關心函式型別是否與(Int, Int) -> Int一致; 不關心函式內部實現。 func operationResult(funParam:(Int, Int) -> Int, numOne:Int, numTwo:Int){ let result = funParam(numOne, numTwo) print(result) }
- print(result)最終列印結果為3
- 函式型別作為返回值
-
override func viewDidLoad() { super.viewDidLoad() var currentValue = 5 //sub為函式:加一或者減一 let sub = 加一還是減一(currentValue > 0) while currentValue != 0 { currentValue = sub(currentValue) print(currentValue) } } //滿足加一還是減一函式的返回值型別((Int)->Int)的函式 func 加一(_ input: Int) -> Int { return input+1 } //滿足加一還是減一函式的返回值型別((Int)->Int)的函式 func 減一(_ input: Int) -> Int { return input-1 } //(_ condition:Bool)->引數名:引數型別; (Int)->Int->返回值是一個此型別的函式 func 加一還是減一(_ condition:Bool) -> (Int)->Int { return condition ? 減一:加一 }
-