Swift4 函數

很多文章里都提及函數在Swift中一等公民缩擂,你是怎么認為的呢滤港?
我也不太懂廊蜒,淺薄的印象就是函數在Swift中也是一種獨特的類型,和Int 、String ...等等并無不同山叮,想必面向函數編程其實也是基于此八堡,只是函數可以作為參數。

//聲明語法
//永不返回的函數 關鍵字Never
func noReturn() -> Never {
  //滄海桑田聘芜,斷電可破兄渺。
}

//無參且無返回值類型 函數
func myFirstFunc() {
  print("whatever...")
}
//使用函數
myFirstFunc()

//帶參函數
//這里需要注意下,name 是函數的內部參數名汰现,這里因為沒有指定外部參數名挂谍,所以默認使用內部參數名作為外部參數名。
//第二個參數,因為指定了secondValue作為了外部參數名瞎饲,所以外部在調用該函數時必須要攜帶外部參數名口叙。
func mySecondFunc(name: String, secondValue  age: Int) {
  print("my name is \(name), age is \(age)")
}

//有返回值函數
func myThirdFunc(_ a: Int, multipy b: Int) -> Int {
  return a * b
}
//注意 忽略了第一個參數的外部參數名
myThirdFunc(2, multipy: 2)

//函數的返回值 可以是元組
func myFourFunc () -> (a, b) {
  return(2, 4)
}

傳值調用 與 傳址調用

這里來看下Swift下該怎么做
傳值調用(默認行為)copy-in
傳址調用(需要使用關鍵字 inout)copy-in copy-out
Tip:主要是防止意外改變傳遞參數的行為

var number = 5
func myFunc (value num: inout Int) {
  value += 2
}
myFunc(value: &number)
print(number) // result : 7

重載 overloading

重載是Swift下的一大利器

func myFunc(parameterA: Int)
func myFunc(parameterA: Int , parameterB: Int)
func myFunc(parameterA: Int , parameterB: Int, parameterC: Int)

//相同返回值的函數,下面的兩個函數重載是合法的
func getValue() -> Int {
 return 10
}

func getValue() -> String {
 return "Hi"
}

//只不過調用的時候需要注意,可以指定類型來調用。
let intValue: Int = getValue()
let strValue: String = getValue()

函數是一等公民

func myFunc() {
  print ("hello , world")
}

var function = myFunc 
//調用
function() // hello , world

//將函數作為參數
func show(_ function: () -> (), a: Int) {
  function() //執(zhí)行函數
  print("value :\(a)")
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末嗅战,一起剝皮案震驚了整個濱河市妄田,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驮捍,老刑警劉巖疟呐,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異东且,居然都是意外死亡启具,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門珊泳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲁冯,“玉大人,你說我怎么就攤上這事色查∈硌荩” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵秧了,是天一觀的道長跨扮。 經常有香客問我,道長示惊,這世上最難降的妖魔是什么好港? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮米罚,結果婚禮上钧汹,老公的妹妹穿的比我還像新娘。我一直安慰自己录择,他們只是感情好拔莱,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布碗降。 她就那樣靜靜地躺著,像睡著了一般塘秦。 火紅的嫁衣襯著肌膚如雪讼渊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天尊剔,我揣著相機與錄音爪幻,去河邊找鬼。 笑死须误,一個胖子當著我的面吹牛挨稿,可吹牛的內容都是我干的。 我是一名探鬼主播京痢,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奶甘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祭椰?” 一聲冷哼從身側響起臭家,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎方淤,沒想到半個月后钉赁,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡臣淤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年橄霉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邑蒋。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖按厘,靈堂內的尸體忽然破棺而出医吊,到底是詐尸還是另有隱情,我是刑警寧澤逮京,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布卿堂,位于F島的核電站,受9級特大地震影響懒棉,放射性物質發(fā)生泄漏草描。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一策严、第九天 我趴在偏房一處隱蔽的房頂上張望穗慕。 院中可真熱鬧,春花似錦妻导、人聲如沸逛绵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽术浪。三九已至瓢对,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胰苏,已是汗流浹背硕蛹。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留硕并,地道東北人妓美。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像鲤孵,于是被迫代替她去往敵國和親壶栋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容