Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

397
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!