본문 바로가기

Programming/Swift for Beginners

[Swift] 012 Printing made easy (출력도 쉽게) for beginners


지금까지 REPL에서 문자열을 출력할 때 print 메서드를 사용했습니다. 이 메서드를 다시 살펴보고 좀 더 복잡한 문자열을 구성하는데 이 출력 메서드를 어떻게 사용하는지 알아보겠습니다.

print메서드의 편리한 기능 중 하나는 변수의 내용을 힘들이지 않고 다른 텍스트와 같이 즉시 출력하는 것입니다. C 언어나 Objective-C 언어에 익숙한 개발자라면 포맷된 텍스트를 표현하기 위해ㅐ 입력해야 하는 양이 엄청나다는 것을 알고 있을 것입니다. C 언어의 printf와 Objective-C 언어의 NSLog()가 그 대표적인 표현식 예제입니다. 

아래 예제는 Objective-C의 코드입니다.

NSString *myFavoriteCity = " New Orleans";

NSString *myFavoriteFood = "Seafood Gumbo";

NSString *myFavoriteRestaurant = "MenkuiTei";

NSInteger yearsSinceVisit = 3;

NSLog(@"When I visited %@ %d years ago, I went to %@ and ordered %@.",

myFavoriteCity, yearsSinceVisit, myFavoriteRestaurant, myFavoriteFood);


위 예제가 익숙하다면 몇 가지 문제가 있다는 것을 알 수 있습니다. 우선 문자열이 출력될 때 변수가 있어야 할 정확한 자리에 있지 않습니다. 문자열이 출력될 때 정확한 순서대로 변수를 "줄"을 세울 필요가 있습니다. 그렇지 않으면 예상하지 못한 결과를 얻게 됩니다. 두 번째는 다른 포맷 코드에 두 개의 다른 변수 타입을 처리하는 상황입니다. 즉, NSSString은 %@를 사용하고 NSInteger는 %d 를 사용합니다. (만약 이 코드가 익숙하지 않은 사용자는 Swift에서는 사용하지 않으니 크게 걱정하지 않아도 됩니다.)

Swift언어를 사용하면 길고 복잡한 포맷 문자열을 입력해야 하는 수고스러움이나 코드를 순서대로 배열하고 포맷해야 하는 걱정을 하지 않아도 됩니다. 그 대신 문자열 안의 본래 변수 자리에 변수를 넣으면 다른 텍스트와 같이 제대로 출력됩니다. 

Objective-C코드의 Swift 버전입니다. 선언된 4개의 상수를 모두 참조하는 데 내장된 기호 \(  ) 가 사용되었습니다. 이 기호는 특히 C 언어와 Objective-C 언어에서 이 기능을 어떻게 처리하는지 비교해보면 더육 유용합니다.

물론 문자열의 결과를 변수나 상수에 할당하는 것에 출력하는 것만큼이나 쉬운 일입니다.