官术网_书友最值得收藏!

Extensions

Up until this point, we had to define our entire custom type in a single file. However, it is sometimes useful to separate out part of our custom types into different files, or even just in the same file. To achieve this, Swift provides a feature called extensions. Extensions allow us to add additional functionality to existing types from anywhere.

This functionality is limited to additional functions and additional computed properties:

extension Building {
    var report: String {
        return "This building is \(self.squareFootage) sq ft"
    }

    func isLargerThanOtherBuilding(building: Building) -> Bool {
        return self.squareFootage > building.squareFootage
    }
}

Note that, to define an extension, we use the extension keyword, followed by the type that we would like to extend. Extensions can also be used on an existing class, struct, or enumeration, even those defined within Swift like String. Let's add an extension to String that allows us to repeat a string any number of times:

extension String {
    func repeatNTimes(nTimes: Int) -> String {
        var output = ""
        for _ in 0..<nTimes {
            output += self
        }
        return output
    }
}
"-".repeatNTimes(4) // ----

This is just one simple idea, but it is often incredibly useful to extend the built-in types.

Now that we have a good overview of what tools we have at our disposal for organizing our code, it is time to discuss an important concept in programming called scope.

主站蜘蛛池模板: 长寿区| 双桥区| 叙永县| 上饶市| 六枝特区| 乐清市| 久治县| 五原县| 潍坊市| 明溪县| 枣庄市| 高州市| 嘉黎县| 水城县| 易门县| 逊克县| 峨眉山市| 留坝县| 内黄县| 葫芦岛市| 北川| 小金县| 农安县| 合山市| 体育| 天长市| 措勤县| 闽清县| 临夏市| 清徐县| 鄱阳县| 缙云县| 青河县| 鸡西市| 新泰市| 宣威市| 都江堰市| 宁武县| 女性| 信丰县| 沁阳市|