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

211
Visualizações
cambiar y no puede encontrar la variable en el alcance

¿Por qué debo crear una variable fuera de switch/case? Por ejemplo, este código tendrá un error Cannot find 'size' in scope :

 func sizeCheckNoVar(value: Int) -> String { switch value { case 0...2: let size = "small" case 3...5: let size = "medium" case 6...10: let size = "large" default: let size = "huge" } return size }

Hay una condición predeterminada y AFIK todas las opciones están cubiertas.

Al mismo tiempo, este código estará bien:

 func sizeCheckVar(value: Int) -> String { var size: String switch value { case 0...2: size = "small" case 3...5: size = "medium" case 6...10: size = "large" default: size = "huge" } return size }

PD: vi esta pregunta No se puede encontrar la variable en el alcance , pero quiero saber por qué en lugar de cómo evitar

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

0

Un par de llaves se llama alcance .

En Swift (a diferencia de otros idiomas) existe una regla simple pero férrea:

  • Una variable declarada dentro de un alcance, en su caso particular dentro de la declaración de switch , es visible en su propio alcance y en un nivel inferior, como en su segundo ejemplo

  • No es visible en un nivel superior fuera del alcance, como en su primer ejemplo.

Incluso puede declarar el size como constante porque se garantiza que se inicializará.

 func sizeCheckVar(value: Int) -> String { let size: String switch value { case 0...2: size = "small" case 3...5: size = "medium" case 6...10: size = "large" default: size = "huge" } return size }

Sin embargo, en realidad no necesita la variable local en absoluto. Simplemente return los valores inmediatamente

 func sizeCheckVar(value: Int) -> String { switch value { case 0...2: return "small" case 3...5: return "medium" case 6...10: return "large" default: return "huge" } }

Nota al margen: los dos puntos en una declaración de switch también son una especie de separador de alcance; de lo contrario, obtendría errores sobre la redeclaración de variables en el primer ejemplo.

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