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

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.

主站蜘蛛池模板: 古浪县| 霍邱县| 阿荣旗| 满城县| 南江县| 邵阳市| 杭锦后旗| 龙胜| 罗田县| 临夏县| 鹤壁市| 穆棱市| 汨罗市| 应城市| 崇阳县| 黄冈市| 普陀区| 绍兴县| 胶州市| 登封市| 逊克县| 凤城市| 吉木萨尔县| 朔州市| 凌海市| 石泉县| 长治市| 阳江市| 新昌县| 吐鲁番市| 会同县| 北票市| 威信县| 湘阴县| 弥勒县| 荥阳市| 弥渡县| 万安县| 新竹市| 濉溪县| 武鸣县|