Swift Protocols和Extensions~何时调用方法

时间:2018-04-06 00:40:46

标签: swift protocols

有人可以帮助解释Ray Wenderlich网站上的这个协议和扩展:

    struct Pizza {
    let ingredients: [String]
}

protocol Pizzeria {
    func makePizza(ingredients: [String]) -> Pizza
    //func makeMargherita() -> Pizza
}

extension Pizzeria {
    func makeMargherita() -> Pizza {
        return makePizza(ingredients: ["tomato", "mozzarella"])
    }
}

struct Lombardis: Pizzeria {
    func makePizza(ingredients: [String]) -> Pizza {
        return Pizza(ingredients: ingredients)
    }
    func makeMargherita() -> Pizza {
        return makePizza(ingredients:["tomato", "basil", "mozzarella"])
    }
}

let lombardis1: Pizzeria = Lombardis()
let lombardis2: Lombardis = Lombardis()

print(lombardis1.makeMargherita())
print(lombardis2.makeMargherita())

为什么只有lombardis2与罗勒做披萨?我不明白为什么Lombardis1使用扩展中描述的方法,但l2却没有?

感谢。

0 个答案:

没有答案