문자열 보간법 (String Interpolation)
C# 6.0의 등장
C# 6.0은 2015년에 출시된 C# 프로그래밍 언어의 주요 버전 업데이트로, 도입된 여러 기능 중 하나가 String Interpolation
C# 6.0 이전의 문자열 처리
이전에는 문자열 내에 변수나 표현식을 삽입을 위해 String.Format() 메서드를 사용했다.
문자열 보간법은 C# 6.0부터 도입된 기능으로, 문자열 내에 변수나 표현식을 삽입할 수 있게 해준다.
→ 서식 지정을 간편하게 하며, 가독성도 높일 수 있다.
📌 문자열 보간법의 장점
- 가독성 향상: 기존의 String.Format() 메서드보다 더 간단하고 직관적인 문법을 사용할 수 있어 코드 가독성이 높다.
- 편의성 증대: 변수나 표현식을 직접 문자열에 삽입할 수 있어 코드 작성이 편리하다.
- 유연성 확보: 다양한 서식 지정 옵션을 사용할 수 있어 출력 결과를 세부적으로 조정할 수 있다.
예시 ▽
let a = 10
let b = 20
print("a = \(a)")
print("b = \(b)")
print("a + b = \(a + b)")
print("a - b = \(a - b)")
위 코드 결과 ▽
a = 10
b = 20
a + b = 30
a - b = -10
📌 문자열 보간법의 활용
문자열 보간법은 단순한 변수 삽입뿐만 아니라 정렬, 서식 지정, 조건부 출력 등 다양한 활용이 가능하다.
- 정렬: (variable, width: Int, alignment: String) 형식으로 정렬 옵션을 지정할 수 있다.
- 서식 지정: (variable, formatString) 형식으로 서식을 지정할 수 있다.
- 조건부 출력: (condition ? trueValue : falseValue) 형식으로 조건에 따른 출력을 할 수 있다.
정렬(alignment) ▽
let name = "Alice"
let alignedName = "\(name, width: 10, alignment: .left)"
print(alignedName) // "Alice "
- \(name, width: 10, alignment: .left) 형식으로 정렬 옵션을 지정할 수 있다.
- width: 10은 출력할 문자열의 최소 길이를 10자로 설정하고, alignment: .left는 왼쪽 정렬을 지정한다.
서식 지정(format) ▽
let age = 30
let formattedAge = "\(age, format: "03")"
print(formattedAge) // "030"
- (age, format: "03") 형식으로 서식을 지정할 수 있다.
- format: "03"은 숫자를 3자리로 표현하고 빈 공간은 0으로 채운다.
조건부 출력 ▽
let isPass = true
let result = "\(isPass ? "Pass" : "Fail")"
print(result) // "Pass"
- (isPass ? "Pass" : "Fail") 형식으로 조건에 따른 출력을 할 수 있다.
- isPass가 true이면 "Pass"를, false이면 "Fail"을 출력한다.
복잡한 표현식 ▽
let score = 85
let grade = "\(score >= 90 ? "A" : score >= 80 ? "B" : score >= 70 ? "C" : "D")"
print(grade) // "B"
- 복잡한 조건식도 문자열 보간법 내에서 사용할 수 있다.
- 위의 예시에서는 점수에 따른 학점 등급을 계산하여 출력한다.
'iOS 앱 개발자 프로젝트 > Swift 문법 정복하기' 카테고리의 다른 글
[iOS] lazy var와 private let : 언제 쓰는 걸까? (6) | 2024.08.31 |
---|---|
[Swift] HOF == My HOPE (High-order function) (5) | 2024.05.02 |
[Swift] 객체 지향 프로그래밍 (Object-Oriented Programming) (1) | 2024.04.10 |
[Swift] Inheritance & Override (2) (0) | 2024.04.10 |
[Swift] Closure, Higher Order Function (2) (0) | 2024.03.31 |