swift用法一

【Swift之方法名判斷】|那些人追的干貨

字?jǐn)?shù)2028 閱讀10565 評論11 喜歡42

前言

最近開始學(xué)習(xí)Swift了,感覺在不上手Swift就Out了,這篇blog是我在學(xué)習(xí)Swift中感覺比較實(shí)用,就小結(jié)了下,陸續(xù)還會有更新。

我從事iOS開發(fā)不是很長,但是成長還算快的,說說我為啥能這么短的時間進(jìn)步這么快吧,沒別的,就是喜歡把實(shí)用的東西做成筆記,因?yàn)槲腋杏X自己總結(jié)出來的才算完全掌握,這是我一直以來的學(xué)習(xí)方法。拿去用吧,?。之前筆記都是藏著掖著,現(xiàn)在感覺分享出來,接受大家指導(dǎo),可能會更好,快來噴我吧,求噴?。?!

正文開始咯!

如果有iOS開發(fā)經(jīng)驗(yàn),我們都知道OC方法名在開發(fā)中是比較常用的,比如用perform調(diào)用方法或者運(yùn)行時調(diào)用,都需要用到方法名。

在Swift開發(fā)中,有時也需要用到方法名,比如說使用定時器的時候,有個Selector參數(shù),就需要傳入方法名,這時候如何判斷方法的方法名,就成為開發(fā)必須了解的了。

NSTimer.scheduledTimerWithTimeInterval(ti:NSTimeInterval, target:AnyObject, selector:Selector, userInfo:AnyObject?, repeats:Bool)

什么是方法?

首先我們需要了解一個概念,Swift中什么是方法?其實(shí)可以這樣理解,就是定義在類里面的函數(shù),只不過這個函數(shù)和類產(chǎn)生了某種關(guān)聯(lián)聯(lián)系,必須依賴于類。

如何判斷Swift方法的方法名?

swift方法名和OC方法名命名差不多。

1、如果方法中沒有參數(shù),函數(shù)名就是方法名。

class Person: NSObject {

// 定義一個跑步方法

func run(){

println("跑步")

}

注解: 以上方法名為: run

}

2、如果方法中有參數(shù),外部參數(shù)名和冒號(:)都要作為方法名的一部分。(PS:參數(shù)名又分為內(nèi)部參數(shù)名和外部參數(shù)名,默認(rèn)外部參數(shù)名作為方法名一部分,注意:在Swift方法中,默認(rèn)從第二個參數(shù)開始,內(nèi)部參數(shù)名就是外部參數(shù)名)

一個方法僅僅只有一個參數(shù)并且沒有外部參數(shù)名的情況,第一個參數(shù)名不作為方法名的一部分。因?yàn)槟J(rèn)第一個參數(shù)沒有外部參數(shù)名。

class Person: NSObject {

// 定義一個打游戲方法,只有一個參數(shù)

func playGame(game: String){

println("\(game)")

}

注解: 以上方法名為: playGame:, 因?yàn)間ame是第一個內(nèi)部參數(shù)名,因此不作為方法名的一部分。

}

一個方法僅僅只有一個參數(shù)并且有外部參數(shù)名的情況,系統(tǒng)會自動把外部參數(shù)名的首字母大寫,并且在函數(shù)名和第一個外部參數(shù)名之間拼接一個介詞With,生成一個完整的方法名。

class Person: NSObject {

// 定義一個打游戲方法,只有一個參數(shù)

func playGame(gameName game: String){

println("\(game)")

}

注解: 以上方法名為: playGameWithGameName:, 因?yàn)橄到y(tǒng)首先會自動把外部參數(shù)名gameName的首字母大寫GameName,并且在函數(shù)名playName和第一個外部參數(shù)名GameName之間拼接一個介詞With,生成一個完整的方法名。

}

注意:如果函數(shù)名中已經(jīng)有介詞了,就不會自動拼接介詞With,方法中經(jīng)常使用的介詞有(with,at,on,in,of,by,for),只有沒有介詞的情況,才會默認(rèn)拼接介詞With

class Person: NSObject {

// 定義一個打游戲方法,只有一個參數(shù)

func playGameWith(gameName game: String){

println("打游戲")

}

注解: 以上方法名為: playGameWithGameName:, 并不是playGameWithWithGameName,因?yàn)楹瘮?shù)名playGameWith中已經(jīng)有介詞With了,就不會在自動拼接了,而是直接把外部參數(shù)名gameName首字母大寫,拼接上去就好了。

func playGameOf(gameName game: String){

println("打游戲")

}

注解: 以上方法名為: playGameOfGameName:,理由同上

func playGameAt(gameName game: String){

println("打游戲")

}

注解: 以上方法名為: playGameAtGameName:, ,理由同上

func playGameIn(gameName game: String){

println("打游戲")

}

注解: 以上方法名為: playGameInGameName: ,理由同上

func playGameOn(gameName game: String){

println("打游戲")

}

注解: 以上方法名為: playGameOnGameName: ,理由同上

func playGameBy(gameName game: String){

println("打游戲")

}

注解: 以上方法名為: playGameByGameName:,理由同上

}

一個方法有多個參數(shù),并且沒有外部參數(shù)名的情況。

class Person: NSObject {

// 定義一個和MM,在某個地點(diǎn)聊天方法,有2個參數(shù)

// 以下方法名為: chat:address:, 因?yàn)閙m是第一個參數(shù),不作為方法名的一部分,第二個內(nèi)部參數(shù)名address才作為方法名的一部分,每個參數(shù)對應(yīng)一個冒號.

func chat(mm: String, address: String){

println("我和\(mm),在\(address)聊天")

}

}

一個方法有多個參數(shù),并且有外部參數(shù)名的情況。

class Person: NSObject {

// 定義一個和MM,在某個地點(diǎn)聊天方法

func chat(mm: String, place address: String){

println("我和\(mm),在\(address)聊天")

}

注解: 以上方法名為: chat:place:,因?yàn)閙m沒有外部參數(shù)名就不會作為方法的一部分,address有外部參數(shù),就系統(tǒng)就不會自動生成address外部參數(shù),直接使用定義的外部參數(shù)名place

// 定義一個和MM,在某個地點(diǎn)聊天方法

func chat(xiaoCang mm: String, place address: String){

println("我和\(mm),在\(address)聊天")

}

注解:以上方法名為: chatWithXiaoCang:place:,因?yàn)閙m有外部參數(shù)名就會作為方法的一部分并且拼接一個介詞With,address有外部參數(shù),就系統(tǒng)就不會自動生成address外部參數(shù),直接使用定義的外部參數(shù)名place

// 定義一個和MM,在某個地點(diǎn)聊天方法

func chat(xiaoCang mm: String, _ address: String){

println("我和\(mm),在\(address)聊天")

}

注解: 以上方法名為: chatWithXiaoCang::,因?yàn)閙m有外部參數(shù)名就會作為方法的一部分并且拼接一個介詞With,address沒有外部參數(shù),因?yàn)槁暶鱛(強(qiáng)制符)系統(tǒng)就不會自動生成address外部參數(shù),切記只有外部參數(shù)才會作為方法的一部分。

}

Swift方法名判斷總結(jié):

主要看有沒有外部參數(shù)名,有就會作為方法的一部分。

其實(shí)只要方法命名規(guī)范,是很好判斷的。第一個參數(shù)描述放在函數(shù)名中,默認(rèn)之后的外部參數(shù)名就是內(nèi)部參數(shù)名。

Swift方法其實(shí)跟我們OC方法相似,通常第一個參數(shù)的描述,我們都是聲明在方法描述中。

+(instancetype)personWithDict:(NSDictionary *)dict;

+(instancetype)personWithName:(NSString *)name age:(int)age

因此swift方法命名,個人建議最好在函數(shù)名中聲明第一個參數(shù)的描述。如下:

func playGameWithName:(name: String){},這個方法名為playGameWithName:,這個就是我們比較熟悉的OC命名方式了,就是因?yàn)檫@個Swift才不會給第一個參數(shù)生成外部參數(shù)名。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最近開始學(xué)習(xí)Swift了,感覺在不上手Swift就Out了,這篇blog是我在學(xué)習(xí)Swift中感覺比較實(shí)用,...
    袁崢閱讀 14,211評論 11 58
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,115評論 0 6
  • 2014年的蘋果全球開發(fā)者大會(WWDC),當(dāng)Craig Federighi向全世界宣布“We have new ...
    yeshenlong520閱讀 2,405評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 不要問我在哪里 在和你牽手的地方 翻你送我那部粉色的手機(jī) 看有沒有你發(fā)來的信息 你走得很遠(yuǎn)很遠(yuǎn) 我怕你回來的時候 ...
    秋之語閱讀 478評論 22 8

友情鏈接更多精彩內(nèi)容