位置:首頁 > 高級語言 > Swift教學 > Swift方法要求

Swift方法要求

方法要求

協議能夠要求其遵循者必備某些特定的實例方法類方法。協議方法的聲明與普通方法聲明相似,但它不需要方法內容。


注意: 協議方法支持變長參數(variadic parameter),不支持默認參數(default parameter)
 

前置class關鍵字表示協議中的成員為類成員;當協議用於被枚舉結構體遵循時,則使用static關鍵字。如下所示:

protocol SomeProtocol {
    class func someTypeMethod()
}

protocol RandomNumberGenerator {
    func random() -> Double
}

RandomNumberGenerator協議要求其遵循者必須擁有一個名為random, 返回值類型為Double的實例方法。(我們假設隨機數在[0,1]區間內)。

LinearCongruentialGenerator遵循RandomNumberGenerator協議,並提供了一個叫做線性同餘生成器(linear congruential generator)的偽隨機數算法。

class LinearCongruentialGenerator: RandomNumberGenerator {
    var lastRandom = 42.0
    let m = 139968.0
    let a = 3877.0
    let c = 29573.0
    func random() -> Double {
        lastRandom = ((lastRandom * a + c) % m)
        return lastRandom / m
    }
}
let generator = LinearCongruentialGenerator()
println("Here's a random number: \(generator.random())")
// 輸出 : "Here's a random number: 0.37464991998171"
println("And another one: \(generator.random())")
// 輸出 : "And another one: 0.729023776863283"