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

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.

主站蜘蛛池模板: 崇礼县| 都安| 兰西县| 滨海县| 望谟县| 伊吾县| 即墨市| 台山市| 乌什县| 汾阳市| 洪江市| 平远县| 望谟县| 曲水县| 江达县| 资阳市| 昭平县| 冷水江市| 五峰| 德令哈市| 芮城县| 屯门区| 江门市| 呼和浩特市| 贵溪市| 宝丰县| 米脂县| 张家界市| 崇仁县| 山丹县| 唐河县| 保定市| 龙口市| 马尔康县| 铜鼓县| 买车| 新宁县| 宜君县| 庆城县| 高邑县| 岳阳市|