Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

394
Visualizações
La propiedad 'let' no se puede inicializar directamente; use "self.init(...)" o "self = ..." en su lugar

Quiero intentar escribir un init predeterminado en una extensión de protocol , así que hice esto:

 protocol P { var data: [AnyHashable: Any] { get } init(_ s: String) } extension P { init(_ s: String) { self.data = ["s": s] } }

Pero estoy recibiendo este error:

La propiedad 'let' 'data' no se puede inicializar directamente; use "self.init(...)" o "self = ..." en su lugar

No tengo idea de lo que significa. ¡Gracias por tu ayuda!

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

El error dice que la variable no se puede inicializar en la extensión del protocolo porque está declarada como constante { get }

Pero incluso si declara la variable { get set } , no puede usar el método init de todos modos sin una restricción a un tipo concreto o un tipo asociado.

over 4 years ago · Santiago Trujillo Relatório

0

import PlaygroundSupport protocol P { var data: [AnyHashable: Any] { get } var _data: [AnyHashable: Any] { get set } static func generator(_ s: String) -> P init() } extension P { static func generator(_ s: String) -> P { var p = self.init() p._data = ["s": s] return p } } class A: P { required init() { } var data: [AnyHashable : Any] { return _data } var _data: [AnyHashable : Any] = [:] } let a = A.generator("some") print(a.data) PlaygroundPage.current.finishExecution()

Creo que este es el código más cercano que desea. El problema es que _data es compartido por otras clases.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda