Swift中函數(shù)的初級操作

介紹

Swift 函數(shù)與 javascriptC# 的函數(shù)寫法很像,但和 Objective-C 的方法卻大大不一樣像樊。Swift 的函數(shù)經(jīng)過歷代版本的優(yōu)化也已逐漸成型泽西,寫法大同小異佛纫,話不多說缝彬,直接上代碼

函數(shù)的定義

  1. 常規(guī)函數(shù)定義(有參數(shù)也有返回值)
override func viewDidLoad() {
   super.viewDidLoad()
   print(sum(a : 10, b : 5))
}
// 格式 函數(shù)名(形參1萌焰,形參2...) -> 返回值類型
func sum(a : Int, b : Int) -> Int {
   return a + b
}

以上代碼為 Swift 4.0 的語法。 Swift 4.0 的語法沒有改動谷浅,依然延續(xù)了 Swift 3.0 的規(guī)則扒俯。在 Swift 2.0 中略有區(qū)別,調(diào)用語法格式為:sum(10, b : 5)一疯,少了第一個參數(shù)的形參看起來有些不倫不類撼玄。

  1. 使用外部參數(shù)定義函數(shù)
override func viewDidLoad() {
   super.viewDidLoad()
   print(sum(number1 : 10, number2 : 5))
}
func sum(number1 a : Int, number2 b : Int) -> Int {
   return a + b
}

所謂的外部參數(shù)就是在形參前加一個替代形參的別名,這個外部參數(shù)不會影響函數(shù)內(nèi)部的細(xì)節(jié)墩邀。通過添加外部參數(shù)來定義函數(shù)可以使調(diào)用者更加直觀的理解傳參的類型掌猛,不需要再去源文件里查看,減少開發(fā)時間成本磕蒲。

  1. 定義函數(shù)并忽略形參名稱
override func viewDidLoad() {
   super.viewDidLoad()
   print(sum(10, 5))
}
func sum(_ a : Int, _ b : Int) -> Int {
   return a + b
}

外部參數(shù)使用 “_” 表示在外部調(diào)用該函數(shù)時忽略形參名稱留潦。
結(jié)果輸出:


函數(shù)的定義結(jié)果輸出
  1. 定義無返回值函數(shù)的三種方式
override func viewDidLoad() {
   super.viewDidLoad()
   demo1()
   demo2()
   demo3()
}
func demo1() {
   print("直接省略返回值")
}
func demo2() -> () {
   print("使用()表示空執(zhí)行")
}  
func demo3() -> Void {
   print("使用 Void 關(guān)鍵字表示無返回值")
}

輸出結(jié)果:


無返回值函數(shù)輸出結(jié)果
  1. 定義函數(shù)的默認(rèn)值
override func viewDidLoad() {
   super.viewDidLoad()
   print(sum())
   print(sum(a : 100))
   print(sum(b : 50))
   print(sum(a: 20, b : 5))
}
func sum(a : Int = 5, b : Int = 10) {
   return a + b
}

默認(rèn)值結(jié)果輸出:


有默認(rèn)值函數(shù)的輸出
  1. 類方法(函數(shù))的定義
    Objective-C 的程序員對于 實例方法類方法 并不陌生,在 Objective-C 中定義實例方法使用 -辣往,定義類方法使用 +,在 Swift 中類方法的定義更明確一些殖卑,必須使用 class 或者 static 修飾站削。用法為:在 class 類中定義類方法可以使用 classstatic 修飾,在 structenum中只能使用 static孵稽。
class Calculators {
    /// 使用 static 修飾類方法
    static func calculator(number1 a: Int, number2 b: Int) -> Int {
        return a + b
    }
    /// 使用 class 修飾類方法
    class func calculator1(number1 a: Int, number2 b: Int) -> Int {
        return a + b
    }
}
class ViewController : UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        print(Calculators.calculator(number1: 10, number2: 5))
        print(Calculators.calculator1(number1: 10, number2: 5))
    }
}

類方法輸出結(jié)果

代碼正常輸出许起,說明在類(class)中定義類方法使用 class 或者 static 并沒有什么區(qū)別十偶,但在定義結(jié)構(gòu)體的時候會有明確的指示:
在 struct 中使用class修飾的報錯提示

struct 使用 class 修飾符會報編譯錯誤 Class methods are only allowed within classes; use 'static' to declare a static method。在開發(fā)中要有區(qū)分的使用园细。

總結(jié)

  • Swift 的函數(shù)比 Objective-C 的方法更加靈活惦积,代碼量可以大大縮減;
  • Swift 函數(shù)定義的方式都有一定的規(guī)范 func 函數(shù)名(參數(shù)1, 參數(shù)2,....) 返回類型猛频。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狮崩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鹿寻,更是在濱河造成了極大的恐慌睦柴,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毡熏,死亡現(xiàn)場離奇詭異坦敌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)痢法,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門狱窘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人财搁,你說我怎么就攤上這事蘸炸。” “怎么了妇拯?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵幻馁,是天一觀的道長。 經(jīng)常有香客問我越锈,道長仗嗦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任甘凭,我火速辦了婚禮稀拐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丹弱。我一直安慰自己德撬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布躲胳。 她就那樣靜靜地躺著蜓洪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坯苹。 梳的紋絲不亂的頭發(fā)上隆檀,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼恐仑。 笑死泉坐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的裳仆。 我是一名探鬼主播腕让,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歧斟!你這毒婦竟也來了纯丸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤构捡,失蹤者是張志新(化名)和其女友劉穎液南,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勾徽,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡滑凉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了喘帚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畅姊。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吹由,靈堂內(nèi)的尸體忽然破棺而出若未,到底是詐尸還是另有隱情,我是刑警寧澤倾鲫,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布粗合,位于F島的核電站,受9級特大地震影響乌昔,放射性物質(zhì)發(fā)生泄漏隙疚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一磕道、第九天 我趴在偏房一處隱蔽的房頂上張望供屉。 院中可真熱鬧,春花似錦溺蕉、人聲如沸伶丐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哗魂。三九已至,卻和暖如春漓雅,著一層夾襖步出監(jiān)牢的瞬間啡彬,已是汗流浹背羹与。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工故硅, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留庶灿,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓吃衅,卻偏偏與公主長得像往踢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子徘层,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

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