Substituição de extensões de protocolo Swift
Estou experimentando extensões de protocolo Swift e achei esse comportamento bastante confuso. Você poderia me ajudar a obter o resultado que eu quero?
Veja os comentários nas últimas 4 linhas do código. (Você pode copiar e colar no playground do XCode7, se desejar). Obrigado!!
//: Playground - noun: a place where people can play
import UIKit
protocol Color { }
extension Color { var color : String { return "Default color" } }
protocol RedColor: Color { }
extension RedColor { var color : String { return "Red color" } }
protocol PrintColor {
func getColor() -> String
}
extension PrintColor where Self: Color {
func getColor() -> String {
return color
}
}
class A: Color, PrintColor { }
class B: A, RedColor { }
let colorA = A().color // is "Default color" - OK
let colorB = B().color // is "Red color" - OK
let a = A().getColor() // is "Default color" - OK
let b = B().getColor() // is "Default color" BUT I want it to be "Red color"