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

Extensions

Up until this point, we had to define our entire custom type in a single file. However, it can sometimes be useful to separate out part of our custom types in different files or even just within the same file. For this, Swift provides a feature called extensions. Extensions allow us to add additional functionality to the 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) square feet"
    }

    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 we would like to extend. This can be used on any class, struct, or enumeration, even those defined within Swift, such as String. Let's add an extension to String, which allows us to repeat a string any number of times:

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

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

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

主站蜘蛛池模板: 安乡县| 万安县| 婺源县| 慈溪市| 东安县| 岗巴县| 南宫市| 朝阳市| 西峡县| 凤城市| 普兰县| 溧水县| 岢岚县| 呈贡县| 金山区| 洪雅县| 虹口区| 云浮市| 本溪| 苏州市| 浦江县| 东平县| 沅陵县| 沐川县| 岚皋县| 德格县| 桃江县| 宿州市| 丹江口市| 攀枝花市| 林甸县| 壶关县| 临高县| 沾化县| 屏东县| 广汉市| 柏乡县| 襄汾县| 阳西县| 东明县| 无为县|