Swift 函數(shù)重載含代碼

Swift 函數(shù)重載

當(dāng)兩個(gè)或更多函數(shù)具有相同的名稱但不同的參數(shù)時(shí),它們被稱為重載函數(shù),這個(gè)過(guò)程被稱為函數(shù)重載。愛(ài)掏網(wǎng) - it200.com

讓我們假設(shè)一個(gè)情況。愛(ài)掏網(wǎng) - it200.com您需要開(kāi)發(fā)一個(gè)射擊游戲,玩家可以使用刀、手榴彈和槍攻擊敵人。愛(ài)掏網(wǎng) - it200.com讓我們看看您對(duì)攻擊功能的解決方案可能如何定義這些動(dòng)作為函數(shù):

示例

func attack() {
    //..
    print("Attacking with Knife")
}
func attack() {
    //..
    print("Attacking with Blade")
}
func attack() {
    //..
    print("Attacking with Gun")
}

你可以看到上面的程序?qū)幾g器來(lái)說(shuō)是混亂的,當(dāng)你在Swift中執(zhí)行這個(gè)程序時(shí),你會(huì)得到一個(gè) 編譯時(shí)錯(cuò)誤,“attack()”在這里之前已經(jīng)被聲明過(guò)了。愛(ài)掏網(wǎng) - it200.com然而,另一個(gè)解決辦法可能是為這個(gè)特定功能定義不同的函數(shù)名:

struct Knife {
}
struct Grenade {
}
struct Gun {
}
func attackUsingKnife(weapon:Knife) {
    //..
    print("Attacking with Knife")
}
func attackUsingGrenade(weapon:Grenade) {
    //..
    print("Attacking with Grenade")
}
func attackUsingGun(weapon:Gun) {
    //..
    print("Attacking with Gun")
}

在上面的示例中,你們使用了 struct 來(lái)創(chuàng)建物理對(duì)象,如Knife,Grenade和Gun。愛(ài)掏網(wǎng) - it200.com上面的示例還存在一個(gè)問(wèn)題,就是我們必須記住不同函數(shù)的名字,才能調(diào)用特定的攻擊動(dòng)作。愛(ài)掏網(wǎng) - it200.com為了解決這個(gè)問(wèn)題,使用了函數(shù)重載,即不同函數(shù)的名字相同,但傳入的參數(shù)不同。愛(ài)掏網(wǎng) - it200.com

使用函數(shù)重載的相同示例

struct Knife {
}
struct Grenade {
}
struct Gun {
}
func attack(with weapon:Knife) {
    print("Attacking with Knife")
}
func attack(with weapon:Grenade) {
    print("Attacking with Grenade")
}
func attack(with weapon:Gun) {
    print("Attacking with Gun")
}

attack(with: Knife())
attack(with: Grenade())
attack(with: Gun())

輸出:

Attacking with Knife
Attacking with Grenade
Attacking with Gun

程序解釋

在上面的程序中,創(chuàng)建了三個(gè)不同的函數(shù),它們的名稱都是“attack”。愛(ài)掏網(wǎng) - it200.com它們接受不同的參數(shù)類型,通過(guò)這種方式,在不同的條件下調(diào)用這個(gè)函數(shù)。愛(ài)掏網(wǎng) - it200.com

  • 調(diào)用attack(with: Gun())觸發(fā)函數(shù)func attack(with weapon:Gun)中的語(yǔ)句。愛(ài)掏網(wǎng) - it200.com
  • 調(diào)用attack(with: Grenade())觸發(fā)函數(shù)func attack(with weapon:Grenade)中的語(yǔ)句。愛(ài)掏網(wǎng) - it200.com
  • 調(diào)用attack(with: Knife())觸發(fā)函數(shù)func attack(with weapon:Knife)中的語(yǔ)句。愛(ài)掏網(wǎng) - it200.com

使用不同參數(shù)類型進(jìn)行函數(shù)重載

示例:

func output(x:String) {
    print("Welcome to \(x)")
}
func output(x:Int) {
    print(" \(x)")
}
output(x: "Special")
output(x: 26)

輸出:

Welcome to Special
 26

在上面的程序中,這兩個(gè)函數(shù)具有相同的名稱 output() 和相同數(shù)量的參數(shù),但參數(shù)類型不同。愛(ài)掏網(wǎng) - it200.com第一個(gè)output()函數(shù)以字符串作為參數(shù),而第二個(gè)output()函數(shù)以整數(shù)作為參數(shù)。愛(ài)掏網(wǎng) - it200.com

  • 對(duì)output(x: “Special”)的調(diào)用觸發(fā)函數(shù)func output(x:String)中的語(yǔ)句。愛(ài)掏網(wǎng) - it200.com
  • 而對(duì)output(x: 26)的調(diào)用則觸發(fā)函數(shù)func output(x:Int)中的語(yǔ)句。愛(ài)掏網(wǎng) - it200.com

聲明:所有內(nèi)容來(lái)自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
發(fā)表評(píng)論
更多 網(wǎng)友評(píng)論0 條評(píng)論)
暫無(wú)評(píng)論

返回頂部

主站蜘蛛池模板: 中文字幕julia中文字幕| 999国产精品999久久久久久| 国产亚洲日韩AV在线播放不卡| 永久免费无内鬼放心开车| √8天堂资源地址中文在线| 啊灬老师灬老师灬别停灬用力| 日韩午夜小视频| 香蕉视频污网站| 久久九九99热这里只有精品| 国产成人啪精品午夜在线播放| 欧美人与动人物姣配xxxx| 青青草原国产视频| 亚洲人成在线播放网站| 国产精品丝袜久久久久久不卡 | 亚洲制服丝袜中文字幕| 国产精品爆乳在线播放第一人称| 欧美老人巨大xxxx做受视频| 99re视频在线观看| 亚洲一卡一卡二新区无人区| 国产精品白丝AV网站| 最新国产乱人伦偷精品免费网站| 欧美性xxxxx极品人妖| 久久精品视频99精品视频150| 国产剧果冻传媒星空在线| 日本无吗免费一二区| 美女扒开胸罩露出奶了无遮挡免费| 久久免费国产视频| 又黄又爽又色又刺激的视频| 日本三级高清电影全部| 色综合天天综一个色天天综合网| 中文字幕精品无码亚洲字| 人人妻人人澡人人爽欧美一区| 国产综合色在线视频区| 日韩一区二区三区精品| 精品水蜜桃久久久久久久| 91成人在线播放| 久久人搡人人玩人妻精品首页| 又粗又大又长又爽免费视频| 在线播放无码后入内射少妇| 日韩欧美亚洲精品| 男女下面一进一出无遮挡se |