Matrizes de genéricos no Swift

Eu tenho brincado com matrizes de classes genéricas com tipos diferentes. É mais fácil explicar meu problema com algum código de exemplo:

// Obviously a very pointless protocol...
protocol MyProtocol {
    var value: Self { get }
}

extension Int   : MyProtocol {  var value: Int    { return self } }
extension Double: MyProtocol {  var value: Double { return self } }

class Container<T: MyProtocol> {
    var values: [T]

    init(_ values: T...) {
        self.values = values
    }

    func myMethod() -> [T] {
        return values
    }
}

Agora, se eu tentar criar uma matriz de contêineres assim:

var containers: [Container<MyProtocol>] = []

Eu recebo o erro:

O protocolo 'MyProtocol' pode ser usado apenas como uma restrição genérica, porque possui requisitos de tipo Próprio ou associado.

Para consertar isso eu posso usar[AnyObject]:

let containers: [AnyObject] = [Container<Int>(1, 2, 3), Container<Double>(1.0, 2.0, 3.0)]
// Explicitly stating the types just for clarity.

Mas agora outro 'problema' surge ao enumerar atravéscontainers:

for container in containers {
    if let c = container as? Container<Int> {
        println(c.myMethod())

    } else if let c = container as? Container<Double> {
        println(c.myMethod())
    }
}

Como você pode ver no código acima, depois de determinar o tipo decontainer o mesmo método é chamado nos dois casos. Minha pergunta é:

Existe uma maneira melhor de obter oContainer com o tipo correto do que transmitir para todos os tipos possíveis deContainer? Ou há algo mais que eu tenha esquecido?

questionAnswers(5)

yourAnswerToTheQuestion