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

247
Visualizações
¿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 Respostas
Responde à pergunta

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 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