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

243
Views
¿Es posible combinar el cambio de caso por defecto y algunos de los casos cuando hacen lo mismo?

Tengo una pregunta sobre el cambio de caso en Swift. tengo una estructura

 struct State { static let initialized = "init" static let ready = "ready" static let recording = "recording" static let finished = "finished" static let error = "error" }

y quiero devolver UIImage según el estado actual.

 func getHeaderIconImage(from status: String) -> UIImage { var result = UIImage() switch status { case State.ready, State.finished: result = Images.ready case State.recording: result = Images.ongoing case State.initialized, State.error: result = Images.notReady default: result = Images.notReady } return result }

Básicamente, la parte predeterminada no debe activarse, pero sin la parte predeterminada, Swift me gritará con Switch must be exhaustive , por lo que debo incluir el caso predeterminado. Dado que hago exactamente lo mismo para el caso .inicializado, .error y el caso predeterminado, probablemente sea mejor combinar esas tres partes y solo debo escribirlo en el caso predeterminado. Sin embargo, pensé que si también puedo escribir el caso .inicializado y el caso .error, es más claro ya que puedo enumerar todos los casos en el caso del interruptor.

Entonces, me preguntaba si hay una manera de refactorizar el estado del interruptor para combinar el caso predeterminado con algunos otros casos si hacen exactamente lo mismo. ¿O no puedo y dejo el caso .init & .error y predeterminado, o me deshago de la parte .init & .error?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Está cambiando un valor de cadena. El compilador no sabe que solo está utilizando las propiedades estáticas de su estructura de State y, técnicamente, no está limitado a eso. Entonces, en este caso, el compilador sabe que otros valores de cadena son posibles y necesita agregar un caso default . Cuando usas una enumeración:

 enum State: String { case initialized = "init" case ready = "ready" case recording = "recording" case finished = "finished" case error = "error" }

El compilador conoce todos los casos posibles y no lo obligará a usar un caso default .

Usando la enumeración, su función debería verse así: getHeaderIconImage(from status: State) -> UIImage

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!