문자열 보간법(String Interpolation)

썹스·2022년 12월 9일
0

Swift 문법

목록 보기
50/68

문자열 보간법(String Interpolation)

Swift에서 문자열 사이에 변수(상수), 리터럴값 등을 표현하기 위해서 문자열 보간법(String Interpolation)을 사용했었습니다.

문자열(" ")안에 \(변수 등)을 대입하여 사용하는 방식입니다.

✅ 문자열 보간법(String Interpolation)

var kim = "김철수"
print("내 이름은 \(kim)")  // 문자열 보간법 = \()

📌 문자열 보간법(String Interpolation)의 동작 원리

문자열 보간법 \(변수 등)미리 정해놓은 문자열(String) 형태로 반환하는 개념입니다.

해당 개념은 인스턴스를 문자열 보간법으로 출력해보면 쉽게 이해할 수 있습니다.

print() 함수를 통해 인스턴스와 문자열 보간법으로 포장된 인스턴스를 출력하면 같은 형태의 출력값을 확인할 수 있지만, 데이터의 상세 정보를 출력하는 dump() 함수를 통해 인스턴스와 문자열 보간법으로 포장된 인스턴스 출력하면 다른 형태의 출력값을 확인할 수 있습니다. 이는 문자열 보간법 \(변수 등)으로 출력한 데이터는 문자열(String)이기 때문입니다.

✅ 문자열 보간법의 출력

struct Man{
    var name: String
    var age: Int
}

var kim = Man(name: "김철수", age: 5)

print(kim)         // Man(name: "김철수", age: 5)
print("\(kim)")    // Man(name: "김철수", age: 5)

dump(kim)          // ▿ __lldb_expr_110.Man
                   //   - name: "김철수"
                   //   - age: 5

dump("\(kim)")     // - "Man(name: \"김철수\", age: 5)"

📌 문자열 보간법 형태 변경

애플에서 미리 지정해놓은 문자열(String) 형태를 개발자가 원하는 형태로 변환할 수 있습니다.

✅ Swift5 이전의 문자열 보간법 형태 변경

출력 형태를 변경하고 싶은 타입을 확장하는 방식입니다.

확장 시 CustomStringConvertible 프로토콜을 채택하여 description 읽기 계산속성을 구현하면 원하는 형태로 변환할 수 있습니다.

struct Man{
    var name: String
    var age: Int
}

extension Man: CustomStringConvertible{
    var description: String {
        return "저의 이름은 \(name)이고, 나이는 \(age)입니다."
    }
}

var kim = Man(name: "김철수", age: 5)
print("\(kim)")

✅ Swift5 이후의 문자열 보간법 형태 변경

String 구조체 내부에 선언되어있는 StringInterpolation을 확장하여 appendInterpolation() 메서드를 구현하면 원하는 형태로 변환할 수 있습니다.

struct Man{
    var name: String
    var age: Int
}

extension String.StringInterpolation{
    mutating func appendInterpolation(_ value: Man) {
        appendInterpolation("저의 이름은 \(value.name), 나이는 \(value.age)입니다.")
    }
}

var kim = Man(name: "김철수", age: 5)
print("\(kim)")

/* 출력 결과
 저의 이름은 김철수, 나이는 5입니다.
 */
profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글