Swift-函數(shù)

文章是根據(jù)The Swift Programming Language 來(lái)總結(jié)的制肮,今天就學(xué)習(xí)一下最基礎(chǔ)的函數(shù)用法康二,本文總結(jié)的是函數(shù)的聲明使用

OC的方法聲明與使用

// 沒(méi)有參數(shù)碳胳,沒(méi)有返回值
- (void)sayHolle{
    NSLog(@"Hello, Objective-C");
}
// 一個(gè)參數(shù),沒(méi)有返回值
- (void)oneParam:(NSString *)name{
    NSLog(@"%@", name);
}
// 多個(gè)參數(shù)沫勿,沒(méi)有返回值
- (void)moreParam:(NSString *)name age:(NSInteger)age score:(double)score{
    NSLog(@"%@--%@--%@", name, @(age), @(score));
}
// 沒(méi)有參數(shù)挨约,有返回值
- (NSString *)returnMyName{
    return @"daisuke";
}
// 多個(gè)參數(shù),有返回值
- (NSString *)getInfoWithName:(NSString *)name age:(NSInteger)age score:(double)score{
    return [NSString stringWithFormat:@"%@--%@--%@", name, @(age), @(score)];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    [self getInfoWithName:@"daisuke" age:24 score:99];
}

Swift的函數(shù)聲明與使用

  • 函數(shù)的格式:func 函數(shù)名(參數(shù): 參數(shù)類型...) -> 返回值 { // 代碼實(shí)現(xiàn) }

  • 沒(méi)有返回值的時(shí)候产雹, -> 返回值可以省略

  • 默認(rèn)情況下诫惭,在調(diào)用函數(shù)時(shí),第一個(gè)參數(shù)名是省略的

沒(méi)有參數(shù)蔓挖,沒(méi)有返回值

// 沒(méi)有參數(shù)夕土,沒(méi)有返回值
func printlOut(){
    print("Hello,Swift")
}
// 調(diào)用函數(shù)
printlOut()
// 或者
func printlOut1() ->Void{
    // 沒(méi)有返回值的時(shí)候,->void可以省略
    print("Hello,Swift")
}
// 調(diào)用函數(shù)
printlOut1()

聲明一個(gè)參數(shù)的函數(shù)

// 聲明一個(gè)參數(shù)的函數(shù)
func testOneParam (age:(Int)){
    print("My age is \(age)")
}
// 調(diào)用函數(shù)
testOneParam(10)

聲明多個(gè)參數(shù)的函數(shù)

// 聲明多個(gè)參數(shù)的函數(shù)
func testMoreParam (age:(Int), name:(String), score:(Double)){
    print("My name is \(name) and age is \(age) and score is \(score)")
}
// 調(diào)用函數(shù),注意調(diào)用的時(shí)候?yàn)榱朔奖銈魅氲膮?shù)能對(duì)應(yīng)起來(lái)时甚,并且方便閱讀隘弊,參數(shù)前面需要些參數(shù)的名稱加冒號(hào)哈踱,第一個(gè)不寫
testMoreParam(10, name: "daisuke", score: 100.0)

_的作用

// 當(dāng)然,如果你覺(jué)得這樣寫不好梨熙,可以省略參數(shù)名开镣,就是在聲明函數(shù)的時(shí)候參數(shù)名前面加入下劃線_,而且默認(rèn)第一個(gè)已經(jīng)省略了
// 聲明多個(gè)參數(shù)的函數(shù)
func testMoreParam1 (age:(Int), _ name:(String), _ score:(Double)){
    print("My name is \(name) and age is \(age) and score is \(score)")
}
testMoreParam1(10, "daisuke", 100.0)

有返回值,沒(méi)有參數(shù)

// 有返回值咽扇,沒(méi)有參數(shù)
func getMyName() ->String{
    return "daisuke"
}
var name = getMyName()
print(name)

有返回值邪财,有參數(shù)

// 有返回值,有參數(shù)
func getMyInfo(name:String, age:Int) ->String{
    return "my name is \(name) and age is \(age)"
}
var info = getMyInfo("daisuke", age: 24)
print(info)

嵌套函數(shù)

// 嵌套函數(shù)
func getAllInfo(name:String, _ age:Int, score:Double) ->String{
    let info = getMyInfo(name, age: age)
    return "\(info)  and score is \(score)"
}
let allInfo = getAllInfo("daisuke", 23, score: 100)
print(allInfo)

Swift的類型

函數(shù)類型:1质欲、類似于C語(yǔ)言的指向函數(shù)的指針树埠。2、類似OC語(yǔ)言的block嘶伟。3怎憋、函數(shù)類型是由函數(shù)的參數(shù)類型和返回值類型組成的

先定義兩個(gè)通用函數(shù)

// 加法函數(shù)
func sum(a: Int, b: Int) ->Int{
    return a+b
}
// 減法函數(shù)
func sub(a: Int, b: Int) ->Int{
    return a-b
}

利用函數(shù)類型定義函數(shù)變量和常量

// 利用函數(shù)類型定義函數(shù)變量和常量
var funcSum :(Int, Int) ->Int = sum
print(funcSum(10, 20))
// 30
funcSum = sub
print(funcSum(10, 20))
// -10

** 這里解釋一下,可以理解為sum函數(shù)的聲明九昧,跟變量的類型聲明必須一樣绊袋,那就相當(dāng)于變量funcSum就是函數(shù)sum了,所以funcSum = sum,就相當(dāng)于funcSum是加法函數(shù)铸鹰,得出的值是30.而funcSum = sub就相當(dāng)于減法函數(shù)癌别,的出來(lái)的值是-10. **

函數(shù)類型可以作為函數(shù)的參數(shù)

// 加法函數(shù)當(dāng)做參數(shù)
func scoreFunc(math: Int, english: Int, sum:(Int, Int) ->Int) ->Int
{
    return sum(math, english)
}
var totalScore = scoreFunc(100, english: 60, sum: sum)
print(totalScore)
// 160
// 減法函數(shù)當(dāng)做參數(shù)
func scoreFuncSub(totalScore: Int, math: Int, sub:(Int, Int) ->Int) ->Int
{
    return sub(totalScore, math)
}
var subScore = scoreFuncSub(100, math: 50, sub: sub)
print(subScore)
// 50

** 可以理解為參數(shù)就是一個(gè)函數(shù),但是參數(shù)的類型跟函數(shù)的類型必須一樣蹋笼,無(wú)論參數(shù)還是返回值展姐,sum:(Int, Int) ->Int就是跟func sum(a: Int, b: Int) ->Int兩個(gè)類型必須一樣,總結(jié)一句話剖毯,就是函數(shù)就是一個(gè)參數(shù) **

函數(shù)類型可以作為函數(shù)返回值

func max(a: Int, b: Int) ->Int
{
    return a > b ? a : b
}
func min(a: Int, b: Int) ->Int
{
    return a < b ? a : b
}
func chooseFunc(getMax: Bool) ->(Int, Int) ->Int
{
    return getMax ? max : min
}
var chooseTrue:(Int, Int) ->Int = chooseFunc(true)
print(chooseTrue(10,30))
// 30
var chooseFalse:(Int, Int) ->Int = chooseFunc(false)
print(chooseFalse(10,30))
// 10

** chooseFunc函數(shù)的返回值就是一個(gè)函數(shù)圾笨,而且他是根據(jù)參數(shù)getMax判斷是否取最大還是最小,當(dāng)true的時(shí)候取最大的函數(shù)max逊谋,也教師返回max函數(shù)墅拭,而max函數(shù)賦值給類型一樣的變量chooseTrue,前面已經(jīng)有例子涣狗,所以chooseTrue也就相當(dāng)于max函數(shù),調(diào)用chooseTrue函數(shù)就是max函數(shù) **

想了解更多舒憾,歡迎來(lái)我的個(gè)人網(wǎng)站daisuke

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镀钓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子镀迂,更是在濱河造成了極大的恐慌丁溅,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件探遵,死亡現(xiàn)場(chǎng)離奇詭異窟赏,居然都是意外死亡妓柜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門涯穷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)棍掐,“玉大人,你說(shuō)我怎么就攤上這事拷况∽骰停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵赚瘦,是天一觀的道長(zhǎng)粟誓。 經(jīng)常有香客問(wèn)我,道長(zhǎng)起意,這世上最難降的妖魔是什么鹰服? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮揽咕,結(jié)果婚禮上悲酷,老公的妹妹穿的比我還像新娘。我一直安慰自己心褐,他們只是感情好舔涎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著逗爹,像睡著了一般亡嫌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掘而,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天挟冠,我揣著相機(jī)與錄音,去河邊找鬼袍睡。 笑死知染,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斑胜。 我是一名探鬼主播控淡,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼止潘!你這毒婦竟也來(lái)了掺炭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凭戴,失蹤者是張志新(化名)和其女友劉穎涧狮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡者冤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年肤视,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涉枫。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邢滑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拜银,到底是詐尸還是另有隱情殊鞭,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布尼桶,位于F島的核電站操灿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泵督。R本人自食惡果不足惜趾盐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望小腊。 院中可真熱鬧救鲤,春花似錦、人聲如沸秩冈。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)入问。三九已至丹锹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芬失,已是汗流浹背楣黍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棱烂,地道東北人租漂。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像颊糜,于是被迫代替她去往敵國(guó)和親哩治。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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

  • Swift 函數(shù)用來(lái)完成特定任務(wù)的獨(dú)立的代碼塊衬鱼。Swift使用一個(gè)統(tǒng)一的語(yǔ)法來(lái)表示簡(jiǎn)單的C語(yǔ)言風(fēng)格的函數(shù)到復(fù)雜的O...
    零度_不結(jié)冰閱讀 321評(píng)論 0 0
  • 函數(shù)是用來(lái)完成特定任務(wù)的獨(dú)立的代碼塊锚扎。給一個(gè)函數(shù)起一個(gè)合適的名字,用來(lái)標(biāo)識(shí)函數(shù)做什么馁启,并且當(dāng)函數(shù)需要執(zhí)行的時(shí)候,這...
    窮人家的孩紙閱讀 810評(píng)論 2 1
  • 函數(shù)是用來(lái)完成特定任務(wù)的獨(dú)立的代碼塊」吒恚可以給函數(shù)起一個(gè)名字翠勉,用于標(biāo)識(shí)一個(gè)函數(shù),當(dāng)函數(shù)需要執(zhí)行的時(shí)候霉颠,這個(gè)名字就會(huì)用...
    EndEvent閱讀 743評(píng)論 1 3
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,802評(píng)論 1 10
  • 01-常量與變量 學(xué)習(xí)swift第一步打印Hello World print("Hello World") swi...
    iOS_恒仔閱讀 5,146評(píng)論 2 19