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

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.

主站蜘蛛池模板: 金寨县| 白沙| 通道| 河东区| 温宿县| 娄底市| 溆浦县| 方正县| 武定县| 岳西县| 永清县| 汉中市| 洪江市| 特克斯县| 博湖县| 石城县| 花莲县| 兴仁县| 闻喜县| 光山县| 乌拉特前旗| 谢通门县| 上杭县| 宣汉县| 山阴县| 长岛县| 长寿区| 澳门| 宁河县| 鲁甸县| 元江| 安乡县| 同心县| 盐山县| 晋中市| 吉林市| 泰州市| 乐昌市| 含山县| 济南市| 靖西县|