Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

206
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda