Swift scope: variables inside blocks
Goal
Understand how scope controls where variables and constants can be used.
- Focus on values declared inside
if,else, andfuncblocks. - Learn how to avoid “cannot find in scope” errors.
if true {
let message = "Inside"
print(message)
}
// print(message) // Error: message is out of scope
What is scope?
Scope is the region of code where a name is visible.
- Variables and constants exist only inside the block they are declared in.
- When the block ends, those names are no longer accessible.
func showTitle() {
let title = "Room calculator"
print(title)
}
// print(title) // Error: title is out of scope
Why developers care about scope
Scope prevents accidental changes to values that should be private.
- It keeps code organized so each block controls its own data.
- It reduces bugs by limiting where variables can be used.
func calculate() {
let roomLength = 6.0
let roomWidth = 4.5
let area = roomLength * roomWidth
print(area)
}
Scope in an if block
A value declared inside an if block exists only inside that block.
- You can use it inside the braces but not after the block ends.
let hasFurniture = true
if hasFurniture {
let furnitureCount = 3
print(furnitureCount)
}
// print(furnitureCount) // Error
Scope in else blocks
Each branch has its own scope.
- Values declared in
ifare not visible inelseand vice versa.
let isLarge = false
if isLarge {
let label = "Large room"
print(label)
} else {
let label = "Small room"
print(label)
}
// print(label) // Error
Scope in functions
All variables declared inside a function are local to that function.
- They cannot be used by code outside the function.
- This makes functions independent and reusable.
func roomVolume() {
let length = 6.0
let width = 4.5
let height = 2.7
let volume = length * width * height
print(volume)
}
// print(volume) // Error
Using values outside a block
Declare the variable before the block if you need it later.
- Then assign it inside the block.
- Make sure it always gets a value before you use it.
var message = ""
if true {
message = "Inside"
}
print(message)
Common scope errors
Using a variable outside its block causes a “cannot find in scope” error.
- Declaring a new variable with the same name can hide the outer one.
- Forgetting to initialize a variable before use causes another error.
var result = 0
if true {
let result = 10
print(result)
}
print(result) // This prints the outer value
How to test scope behavior
Move a variable inside or outside a block and observe the compiler error.
- Check which variables appear in code completion at each line.
- Use print statements to confirm which value is in scope.
if true {
let x = 5
print(x)
}
// print(x) // Uncomment to see the error
Task A
Write an if block that declares a constant inside it.
- Attempt to print the constant outside the block to trigger a scope error.
- Explain why the error occurs.
if true {
let note = "Inside"
// print inside the block
}
// try to print note here
Task B
Declare a variable before an if block.
- Assign a value inside the block and print it afterward.
- Show that the value is accessible outside.
var status = ""
if true {
// assign a value here
}
// print status here
Task C
Write a function that declares three local constants.
- Calculate a result and print it inside the function.
- Try to print the local result outside the function.
func showArea() {
// declare three constants
// calculate area and print it
}
// try to print the area here
Task D
Write an if / else block with a local constant in each branch.
- Print the constant inside each branch.
- Attempt to print it after the block to confirm scope rules.
let isLarge = false
if isLarge {
// declare a label and print it
} else {
// declare a label and print it
}
// try to print label here