Comma(,)와 &&의 차이점을 알고 싶어서 Swift 공식문서를 보던 도중
Expressions와 Statements가 많이 언급되는 걸 보았습니다.
Comma(,)와 &&의 차이를 알기 전에 Expressions과 Statements을
Swift에서는 어떻게 설명하고 있는지 알아봅시다 !!
Expressions
Expressions는 하나 이상의 Token의 조합으로 이루어져 있습니다.
하지만 하나 이상의 Token이라고 해서 무조건 Expressions인 것은 아닙니다.
(ex. 연산자도 Token이지만 Experssions는 아님)
Swift 공식문서에서는 다음과 같이 설명하고 있습니다.
(1)
"Evaluating an expression returns a value, causes a side effect, or both."
expression을 평가하면 값을 반환하거나, side effect가 생기거나, 둘 다 일어나야 한다는 것인데요.
평가한다는 말은 표현식이나 구문이 실행될 때,
그 결과로 어떤 값을 생성하거나 계산하여 반환한다는 의미로 생각하시면 됩니다.
일반적으로 표현식을 기준으로 잡으시면 돼요!
1) 값을 반환하는 경우
// 7을 평가하면 7이 반환되므로 Expressions
let a = 7
// 3 + 4를 평가하면 7이 반환되므로 Expressions
let sum = 3 + 4
// addNumbers(3, 4)를 평가하면 7이 반환되므로 Expressions
func addNumbers(_ a: Int, _ b: Int) -> Int {
let sum = a + b
return sum
}
let result = addNumbers(3, 4)
2) side effect가 발생하는 경우
// addToTotal(5)를 평가하면 변수 total의 값이 바뀌는 side effect가 발생한 Expressions
var total = 0
func addToTotal(_ value: Int) {
total += value
}
addToTotal(5)
3) 둘 다 일어나는 경우
// incrementCounter()를 평가하면 변수 counter의 값이 바뀌는 side effect가 일어나고,
// counter의 값을 반환하는 Expressions
var counter = 0
func incrementCounter() -> Int {
counter += 1
return counter
}
let result = incrementCounter()
(2)
"Access, modify, and assign values."
값에 접근하거나, 값을 수정하거나, 값을 할당한다.
Expressions가 하는 역할에 대해 설명하고 있습니다.
1) 값에 접근하는 경우
// Expressions인 number의 저장된 값에 접근하여 accessedValue에 값을 할당한다.
let number = 42
let accessedValue = number
2) 값을 수정하는 경우
// Expressions인 addToTotal(5)의 호출로 인해 변수 total의 값이 수정된다.
var total = 0
func addToTotal(_ value: Int) {
total += value
}
addToTotal(5)
3) 값을 할당하는 경우
// Expressions인 10을 변수 variableToAssign에 할당한다.
var variableToAssign: Int
variableToAssign = 10
Statements
"Group expressions and control the flow of execution."
표현식을 그룹화하고 실행의 흐름을 제어한다.
Statements가 하는 역할에 대해 설명하고 있습니다.
1) 표현식을 그룹화하는 경우
// 여러 표현식을 그룹화하여 실행되는 코드, Statements
let a = 5
let b = 7
let sum = a + b
2) 실행 흐름을 제어하는 경우
// 여러 표현식들이 모여 흐름을 제어하는 코드, Statements
if condition {
// 조건이 참일 때 실행되는 코드 블록
} else {
// 조건이 거짓일 때 실행되는 코드 블록
}
선언하고, 할당하고, 제어하고, 반복하고, 반환하는 등 모든 최소한의 실행단위는 Statements가 될 수 있습니다.
추가적으로)
"expression을 평가하면..."
평가는 실행한다는 말이죠? 모든 expression은 실행이 가능합니다.
즉, Expressions이면서 Statements라고 할 수 있습니다.
Statements는 최소한의 실행단위이기 때문이죠.
하지만 모든 Statements는 Expressions가 될 수 없습니다!!
예를 들어서, 선언문은 값을 반환하지 않기 때문이에요.
이상입니다. 꾸벅_-