Swift3 关于协议的swift扩展
如何理解下面的代码,当我注释比萨店协议的“Swift3 关于协议的swift扩展,swift3,protocols,extension-methods,Swift3,Protocols,Extension Methods,如何理解下面的代码,当我注释比萨店协议的“func makemargerita()”时,结果是 ["tomato", "mozzarel"] ["tomato", "basil", "mozzarel"] 但是当func makemargerita()工作时,它将打印: ["tomato", "basil", "mozzarel"] ["tomato", "basil", "mozzarel"] 如何理解这个代码 protocol Pizzeria{ func makePizza(ing
func makemargerita()
”时,结果是
["tomato", "mozzarel"]
["tomato", "basil", "mozzarel"]
但是当func makemargerita()
工作时,它将打印:
["tomato", "basil", "mozzarel"]
["tomato", "basil", "mozzarel"]
如何理解这个代码
protocol Pizzeria{
func makePizza(ingredients: [String])
//func makeMargherita()
}
extension Pizzeria{
func makeMargherita() {
return makePizza(ingredients: ["tomato", "mozzarel"])
}
}
struct Lombardis: Pizzeria{
func makePizza(ingredients: [String]) {
print(ingredients)
}
func makeMargherita() {
return makePizza(ingredients: ["tomato", "basil", "mozzarel"])
}
}
let lombardis1: Pizzeria = Lombardis()
let lombardis2: Lombardis = Lombardis()
lombardis1.makeMargherita()
lombardis2.makeMargherita()
那么问题出在哪里呢?请参阅–在协议中定义需求允许动态调度。@Hamish谢谢。这是一个非常有用的答案。那么问题是什么呢?请参阅–在协议中定义需求允许动态调度。@Hamish谢谢。这是一个非常有用的答案。