iOS Swift 擴(kuò)展(Extensions)

一 可以為類添加新功能
  1. UIViewController
extension UIViewController {
    // 為 UIViewController 添加的新功能寫(xiě)到這里
}
  1. Double
extension Double {
    var km: Double { return self * 1_000.0 }
    var m : Double { return self }
    var cm: Double { return self / 100.0 }
    var mm: Double { return self / 1_000.0 }
    var ft: Double { return self / 3.28084 }
    var sq: Double { return self * self }
}
  1. ViewController
extension ViewController{
    func printfChars()
    {
        print("I am char")
    }
}
二 可變實(shí)例方法(Mutating Instance Methods)

通過(guò)擴(kuò)展添加的實(shí)例方法也可以修改該實(shí)例本身叁熔。結(jié)構(gòu)體和枚舉類型中修改 self 或其屬性的方法必須將該實(shí)例方法標(biāo)注為 mutating蚊俺,正如來(lái)自原始實(shí)現(xiàn)的可變方法一樣竿痰。
下面的例子為 Swift 的 Int 類型添加了一個(gè)名為 square 的可變方法,用于計(jì)算原始值的平方值:
改變Int 值本身

extension Int {
    mutating func square() {
        self = self * self
    }
}
三 嵌套類型(Nested Types)

擴(kuò)展可以為已有的類家浇、結(jié)構(gòu)體和枚舉添加新的嵌套類型:

extension Int {
    enum Kind {
        case Negative, Zero, Positive
    }
    var kind: Kind {
        switch self {
        case 0:
            return .Zero
        case let x where x > 0:
            return .Positive
        default:
            return .Negative
        }
    }
}

// 在ViewController: UIViewController 中
// viewDidLoad

self.printfChars()
let oneInch = 25.4.mm
print("One inch is \\(oneInch) meters") // One inch is 0.0254 meters
  let dou = 23.4.sq
  print("\\(dou)") // 547.56
let numbers = [1,2,4,5,6,3,0,-54,-65]
self.printIntegerKinds(numbers) // + + + + + + 0 - - 
var intNumb = 5
intNumb.square()
print("\\(intNumb)") // 25

該例子為 Int 添加了嵌套枚舉。這個(gè)名為Kind 的枚舉表示特定整數(shù)的類型。具體來(lái)說(shuō)误趴,就是表示整數(shù)是正數(shù)、零或者負(fù)數(shù)务傲。
這個(gè)例子還為 Int 添加了一個(gè)計(jì)算型實(shí)例屬性凉当,即 Kind,用來(lái)根據(jù)整數(shù)返回適當(dāng)?shù)?Kind 枚舉成員树灶。
現(xiàn)在纤怒,這個(gè)嵌套枚舉可以和任意 Int 值一起使用了:

func printIntegerKinds(numbers: [Int]) {
        for number in numbers {
            switch number.kind {
            case .Negative:
                print("- ", terminator: "")
            case .Zero:
                print("0 ", terminator: "")
            case .Positive:
                print("+ ", terminator: "")
            }
        }
        print("")
    }
---------------------------------------

走心文章, 值得點(diǎn)贊 ---文/夏天然后
微博-點(diǎn)我@夏天是個(gè)大人了 || QQQ: 498143780

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市天通,隨后出現(xiàn)的幾起案子泊窘,更是在濱河造成了極大的恐慌,老刑警劉巖像寒,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烘豹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡诺祸,警方通過(guò)查閱死者的電腦和手機(jī)携悯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)筷笨,“玉大人憔鬼,你說(shuō)我怎么就攤上這事∥赶模” “怎么了轴或?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)仰禀。 經(jīng)常有香客問(wèn)我照雁,道長(zhǎng),這世上最難降的妖魔是什么答恶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任饺蚊,我火速辦了婚禮,結(jié)果婚禮上悬嗓,老公的妹妹穿的比我還像新娘污呼。我一直安慰自己,他們只是感情好烫扼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布曙求。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悟狱。 梳的紋絲不亂的頭發(fā)上静浴,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音挤渐,去河邊找鬼苹享。 笑死,一個(gè)胖子當(dāng)著我的面吹牛浴麻,可吹牛的內(nèi)容都是我干的得问。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼软免,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宫纬!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起膏萧,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤漓骚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后榛泛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蝌蹂,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年曹锨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了孤个。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沛简,死狀恐怖齐鲤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情椒楣,我是刑警寧澤佳遂,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站撒顿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏荚板。R本人自食惡果不足惜凤壁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望跪另。 院中可真熱鬧拧抖,春花似錦、人聲如沸免绿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至淌哟,卻和暖如春迹卢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背徒仓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工腐碱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掉弛。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓症见,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親殃饿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谋作,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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