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

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

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