學習步驟:
函式概述
常量引數,變數引數, i/o 引數
1.函式 -- 常量引數
2.函式 -- 變數引數(swift3.0已廢棄)
3.函式 -- i/o 引數
引數個數的從0到多
1.函式 -- 不帶引數
2.函式 -- 帶引數
3.可變引數
返回值個數的從0到多
1.沒有返回值函式
2.乙個返回值
3.多個返回值 -- 元組
一.先來了解一下函式:
swift 定義函式使用關鍵字func
。
定義函式的時候,可以指定乙個或多個輸入引數和乙個返回值型別。
每個函式都有乙個函式名來描述它的功能。通過函式名以及對應型別的引數值來呼叫這個函式。函式的引數傳遞的順序必須與引數列表相同。
函式的實參傳遞的順序必須與形參列表相同,->
後定義函式的返回值型別。
func funcname(形參) -> 返回值型別所以我們從//———————————
形參可以沒有,但是()必須有
返回值可以沒有,沒有返回值時 ->也沒有
如:func test()
形參(函式引數)
,返回值
兩部分來了解函式,至於實現部分
則是功能模組,根據需要補充就行。
1.函式 – 常量引數
預設在函式中定義的引數都是常量引數,也就是這個引數你只可以查詢使用,不能改變它的值。
func 函式名( 引數變數:型別 ,引數變數:型別…){}
說明:
1: func 是函式關鍵字
2:{} 函式體
3: 引數變數是預設常量型別,不能在函式函式體裡面直接修改
/*
測試引數變數的預設型別
*/func changeparam(value : int) -> int
var test = 10;
let a = changeparam(value:test);
---------------------
以上**會報錯,終端列印的錯誤資訊是:
left side of mutating operator isn't mutable: '
value
' is a '
let' constant
value += 1;
也就是說value 是 let 常量
2.函式 – 變數引數(swift3.0已廢棄)
過去可以在引數前加關鍵字 var 將其定義為變數,這樣函式內部就可以對該引數進行修改(外部的引數任然不會被修改)。
現在這種做法已經被廢棄❌,swift 3 不再允許開發者這樣來將引數標記為變數了。
func 函式名(var 引數變數 : 型別,… ) {}現在只能用
說明
1: func 函式關鍵字
2: var 引數變數 :型別 表示引數變數是可變變數,不是常量,可以修改
❌ 現在已經不可用,寫出來是為了學習過swift2的同學知道
乙個var變數接收常量引數
來實現變數引數的功能了
func changeparam( value : int) -> int
3.函式 – i/o 引數
i/o引數又叫輸入輸出引數,它傳入的引數是乙個引用,在函式內部修改
了i/o引數,對應的外部引數也會發生改變。
當傳入的引數作為輸入輸出引數時,需要在引數名前加 & 符,表示這個值可以被函式修改。
* 因為i/o引數和外部變數指向同一記憶體位址,修改的是同一記憶體的資料,所以內外同時改變。
*一般預設的引數傳遞都是傳值呼叫(傳入的只是這個引數的副本),而不是傳引用。
func 函式名(引數: inout 型別)
var arr = [1
,2,3
,4,5];
func testioparam(dataarray: inout [int])
}testioparam(dataarray: &arr);//傳入的是arr對應的位址 &為取位址符
print(arr);
輸出結果為
[2, 3, 4, 5]
函式可以接受乙個或者多個引數,這些引數被包含在函式的括號之中,以逗號分隔。
func 函式名(引數1:型別 ,引數2:型別,引數3:型別)
1.函式 – 不帶引數
func 函式名() -> 返回值型別
func test()
2.函式 – 帶引數func 函式名(引數1:型別 ,引數2:型別 ,引數3:型別) -> 返回值型別
引數個數根據需要而定
func add(a: int, b: int) -> int
print(add(a: 10, b: 5));
3.可變引數
可變引數可以接受零個或多個值。函式呼叫時,你可以用可變引數來指定函式引數,其數量是不確定的。
可變引數通過在變數型別名後面加入...
的方式來定義。
func add(numbers: int...) -> int
return totle;
}print(add(numbers: 1,2,3,4,5));//呼叫時多個引數用 , 隔開
1.沒有返回值函式/*
知道即可,主要是用於閉包,在閱讀第三方框架**時保證可以看懂即可。
1. 省略返回值 這種最常用。
2. 返回 ()
3. 返回 void
這三種形式在內都不能使用return返回資料,否則會報錯
*///情況一
func 函式名(引數)
//情況二
func 函式名(引數) -> ()
//情況三
func 函式名(引數) -> void
func test1()
func test2() ->()
func test3() -> void
2.乙個返回值func 函式名(形參)-> 返回值型別
func add(a: int, b: int) -> int
print(add(a: 10, b: 5));
3.多個返回值 – 元組
多個返回值(大於1個)並不是用多個->
實現返回,而是使用元組的形式。
不了解元組的同學可以看下這篇文章swift元組
//舉例而已,不要在意函式有沒有意義��
func address(province:string ,city:string)->(province:string ,city:string)
var addr = address(province: "河南", city: "鄭州")
print("省:\(addr.province),市:\(addr.city)")
返回值是元組的話,可以根據元組的不同宣告方式來改變函式如
func address(province:string ,city:string)->(string ,string)
var (addr1,addr2) = address(province: "河南", city: "鄭州")
print("省:\(addr1),市:\(addr2)")
自己研究元組吧,我就不墨跡了。
到這裡大家看懂一般的函式已經沒問題了,但是呢,總有一些意外情況,讓學了以上部分的你感覺不知所措。學海無涯,我們接著來
swift3之函式csdn位址(二)
Swift3廢除特性(一)
正式版的swift 3.0將隨著ios 10和macos sierra正式版在去年 2016年 秋季推出,但由 於swift開源的特性,使得我們能夠看到swift的開發進展。swift3.1已於今年春季退出,swift4.0將於今年秋季推出。先來回顧一下swift 3廢除的一些特性 1.棄用 與 操...
Swift3新增特性(一)
swift3 不僅移除了swift2中的部分特性,同時也增加了自己的新特性 1 內聯序列函式 sequence swift 3新增了兩個全域性函式 sequence first next 和sequence state next 使用它們可 以返回乙個無限序列 下面是乙個簡單的使用樣例 從某乙個樹節...
Swift 3 建構函式 過載建構函式
viewcontroller.swift import uikit class viewcontroller uiviewcontroller person.swift 建構函式 分配記憶體空間 設定初始值 在swift中 所有的構造方法 都是init 建構函式的責任就是 一定構造乙個物件出來 過載...