Swift語(yǔ)言中函數(shù)

swift語(yǔ)言中函數(shù)是一個(gè)重要的概念奈揍,今天主要談?wù)撓潞瘮?shù)的相關(guān)知識(shí):

函數(shù)基礎(chǔ):

先看一段代碼:


func printName() {

print("My name is Galloway")

}

printName()

這段代碼前三行是聲明了一個(gè)函數(shù)求橄,最后一行是執(zhí)行這段函數(shù)钮莲,聲明函數(shù)的時(shí)候使用關(guān)鍵字func,之后是函數(shù)名袜啃,在花括號(hào)中是整個(gè)函數(shù)體汗侵。

下面再看一段代碼:

func printMultipleOf(multiplier: Int, andValue: Int) {

print("\(multiplier) * \(andValue) = \(multiplier * andValue)")

}

printMultipleOf(4, andValue: 2)

很明顯,這段代碼中也聲明了一個(gè)函數(shù)群发,但區(qū)別是這個(gè)函數(shù)帶有2個(gè)參數(shù)晰韵,函數(shù)中的參數(shù)可以稱為參數(shù)列表,參數(shù)中的格式為:參數(shù)名:參數(shù)類型

上面這段代碼同樣可以改為:

func printMultipleOf(multiplier: Int, and andValue: Int) {

print("\(multiplier) * \(andValue) = \(multiplier * andValue)")

}

printMultipleOf(4, and: 2)

這里第二個(gè)參數(shù)改為:參數(shù)名1 參數(shù)名2: 參數(shù)類型熟妓。這種寫法表示參數(shù)名1用于外部調(diào)用函數(shù)時(shí)使用雪猪,參數(shù)名2用于函數(shù)內(nèi)部實(shí)現(xiàn)時(shí)使用,可以有利于函數(shù)的復(fù)用起愈。

繼續(xù)看一段代碼:

func printMultipleOf(multiplier: Int, _ andValue: Int) {

print("\(multiplier) * \(andValue) = \(multiplier * andValue)")

}

printMultipleOf(4, 2)

這里第二個(gè)參數(shù)設(shè)置為:_ 參數(shù)名2: 參數(shù)類型只恨。這樣就表示調(diào)用這個(gè)函數(shù)的時(shí)候不需要指定名字。

func printMultipleOf(multiplier: Int, _ andValue: Int = 1) {

print("\(multiplier) * \(andValue) = \(multiplier * andValue)")

}

printMultipleOf(4)

printMultipleOf(4,2)

這段代碼設(shè)置了第二個(gè)參數(shù)的默認(rèn)值為1.

上面這段代碼是沒有返回值的抬虽,下面看下有返回值的代碼:

func multiply(number: Int, by byValue: Int) -> Int {

return number * byValue

}

let mulresult = multiply(4, by: 2)

返回值的類型在 ->后官觅,這段函數(shù)的返回值類型是Int型,return后面是返回值阐污。

下面再看一段代碼:

func multiplyAndDivide(number: Int, by byValue: Int) -> (multiply: Int, divide: Int) {

return (number * byValue, number / byValue)

}

let mulresult = multiplyAndDivide(4, by: 2)

let multiply = mulresult.multiply

let divide = mulresult.divide

這段代碼返回了一個(gè)元組(tuples)休涤。

繼續(xù)看一段代碼:

unc incrementAndPrint(inout value: Int) {

value += 1

print(value)

}

var value = 5

incrementAndPrint(&value)

這里使用inout關(guān)鍵字來進(jìn)行引用參數(shù)傳遞。


函數(shù)同樣可以作為變量來使用笛辟,和基本的數(shù)據(jù)類型一樣

看下面這段代碼:

func add(a:Int, _ b: Int) -> Int {

return a + b

}

var function: (Int, Int) -> Int = add

let result = function(4,2)

這段代碼就是將函數(shù)作為變量功氨,使用起來是和基本的數(shù)據(jù)類型一致序苏。

func substract(a: Int, _ b: Int) -> Int {

return a-b

}

function = substract

result = function(4,2)

因?yàn)轭愋褪且恢碌模瑯涌梢园裺ubtract賦值給function疑故。

func printResult(function: (Int,Int) -> Int, _ a: Int, _ b: Int) {

let result = function(a,b)

print(result)

}

printResult(add, 8, 7)

這里function函數(shù)作為printResult函數(shù)的一個(gè)參數(shù)杠览,輸出的結(jié)果為15弯菊。


下面是兩個(gè)練習(xí):

1纵势、

func isNumberDivisible(number: Int, by byNumber: Int) -> Bool {

if number % byNumber == 0 {

return true

} else {

return false

}

}

func isPrime(number: Int) -> Bool {

if number >= 0 {

for i in 2...Int(sqrt(Double(number))) {

if isNumberDivisible(number, by: i) {

return false

}

}

return true

} else {

return false

}

}

isPrime(18653)

判斷一個(gè)數(shù)是否是素?cái)?shù)


2、

func fibonacci(number: Int) -> Int {

if number == 1 || number == 2 {

return 1

} else {

return fibonacci(number-2) + fibonacci(number-1)

}

}

fibonacci(1)

fibonacci(2)

fibonacci(3)

fibonacci(4)

fibonacci(5)

fibonacci(9)

fibonacci(19)

fibonacci(1876)

計(jì)算Fibonacci數(shù)列






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末管钳,一起剝皮案震驚了整個(gè)濱河市钦铁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌才漆,老刑警劉巖牛曹,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異醇滥,居然都是意外死亡黎比,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門鸳玩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阅虫,“玉大人,你說我怎么就攤上這事不跟⊥堑郏” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵窝革,是天一觀的道長(zhǎng)购城。 經(jīng)常有香客問我,道長(zhǎng)虐译,這世上最難降的妖魔是什么瘪板? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮漆诽,結(jié)果婚禮上侮攀,老公的妹妹穿的比我還像新娘。我一直安慰自己拴泌,他們只是感情好魏身,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚪腐,像睡著了一般箭昵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上回季,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天家制,我揣著相機(jī)與錄音正林,去河邊找鬼。 笑死颤殴,一個(gè)胖子當(dāng)著我的面吹牛觅廓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涵但,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼杈绸,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了矮瘟?” 一聲冷哼從身側(cè)響起瞳脓,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澈侠,沒想到半個(gè)月后劫侧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哨啃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年烧栋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拳球。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡审姓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出醇坝,到底是詐尸還是另有隱情邑跪,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布呼猪,位于F島的核電站画畅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宋距。R本人自食惡果不足惜轴踱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谚赎。 院中可真熱鬧淫僻,春花似錦、人聲如沸壶唤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)闸盔。三九已至悯辙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躲撰。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工针贬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拢蛋。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓桦他,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親谆棱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子快压,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容