어플리케이션을 만들다 보면 간혹 문자열로 된 계산식을 계산할 때가 종종 존재한다. 이 때 문자열을 모두 숫자형 데이터로 전환하여 계산을 진행하는데에는 많은 노력이 들게된다. 하지만 이러한 계산을 아주 쉽게 문자열만 전달하면 사용할 수 있는 함수가 존재한다. 바로 NSExpression 이라는 함수이다.
NSExpression
NSExpression 은 Foundation 프레임워크에서 제공하는 클래스로, 문자열 형식의 수식을 표현하고 계산할 수 있는 함수이다. 주로 수학적인 계산이나 조건식을 평가하는데 사용된다. (필자는 계산기를 만드는 과정에서 사용했다.)
import Foundation
func evaluateExpression(_ expressionString: String) -> Double? {
let expression = NSExpression(format: expressionString)
if let value = expression.expressionValue(with: nil, context: nil) as? Double {
return value
}
return nil
}
if let result = evaluateExpression("1 + 2 - 3 * 2") {
print("결과 : \(result)")
} else {
print("수식을 평가할 수 없습니다.")
}
// 실행 결과
// 결과 : -3
위 예제는 String 타입으로 주어진 계산식을 계산하여 값이 잘 나오는지 확인하는 예제이다. 값은 -3 으로 값이 나왔고 계산하는 과정은 아래와 같다.
- 3 * 2
- 1 + 2
- (1 + 2) - (3 * 2)
실제 수학에서 계산하듯 연산 순서에 맞게 계산을 진행하는 것을 알 수 있다.
'TIL(Today I Learned)' 카테고리의 다른 글
| 2024.05.03 Today I Learned (1) | 2024.05.03 |
|---|---|
| 2024.05.02 Today I Learned (0) | 2024.05.02 |
| 2024.04.29 Today I Learned (0) | 2024.04.29 |
| 2024.04.26 Today I Learned (1) | 2024.04.26 |
| 2024.04.25 Today I Learned (0) | 2024.04.25 |