본문 바로가기
iOS/애플 개발자 공식 문서

[Swift] print 함수로 주어진 여러 아이템을 String 타입으로 표준 출력하기

by Dev.Andy 2023. 5. 3.

들어가기 전에

포스팅 이유와 느낀 점

Slack에서 print 함수와 보간법(interpolation)에 대한 차이점의 질문이 올라 와서 나도 궁금해서 공식 문서를 찾아 보며 정리하게 되었다. 당연하게 쓰고 있는 print 함수이지만, 정작 어떻게 제대로 쓰는 줄 몰랐는데 이를 정리하면서 좀 더 깊게 알게 되었다 :)

print 함수에 대한 질문을 필자가 답변하는 이미지
print 함수의 질문에 대한 필자의 답변

참고 자료

print에 대한 애플 개발자 공식 문서를 참고했다. 아래에 한글로 적힌 내용은 공식 문서를 최대한 한글의 문맥에 가깝게 번역했다.

print(_:separator:terminator:) | Apple Developer Documentation

print 함수 정의

공식 문서 정의

Writes the textual representations of the given items into the standard output.

필자 해석

주어진 여러 item들에 대한 텍스트 표현을 표준 출력으로 write한다.

특징

여기서 주목할 점은 3가지 정도인 것 같다.

  1. 텍스트 표현(textual representation) - 문자열 형태로 반환된다
  2. 주어진 여러 아이템(items) - 아이템이 단수형이 아닌 복수형인 점
  3. 표준 출력(standard output)

표준 출력에 대한 내용은 추후 따로 정리를 해야겠다.

함수의 선언

print의 함수에 대한 선언은 아래와 같다.

func print(
    _ items: Any...,
    separator: String = " ",
    terminator: String = "\n"
)

 

매개변수

print 함수는 총 3개의 매개변수로 이루어져 있다.

1. items

출력해야 할 0개 이상의 아이템. (0개여도 출력이 된다는 의미인 것 같다.)

2. separator

각 아이템 사이에 출력할 문자열. 이에 대한 기본값은 공백 하나(" ")이다.

3. terminator

모든 아이템이 출력된 이후 출력할 문자열. 이에 대한 기본값은 줄바꿈 문자 하나("\n")이다.

 

논의

0개 이상의 아이템 출력

print 함수에 0개 이상의 아이템을 전달할 수 있다. 각 아이템의 텍스트 표현(textual representation)은 문자열(아이템)을 호출하여 얻은 것과 같다. 아래의 내용은 문자열 하나와 닫힌 범위의 정수, 부동소수점 값에 대한 그룹을 표준 출력으로 출력하는 예시 코드이다.

print("three two one") // "three two one\n" 출력

print(3...1) // "3...1\n" 출력

print(1.0, 2.0, 3.0, 4.0, 5.0) // "3.0 2.0 1.0\n" 출력

여기서 주의할 점은 terminator에 대한 기본값으로 줄바꿈 문자("\n")도 같이 출력된다는 점이다. 화면 상에서는 줄바꿈 문자는 보여지지 않더라도 이를 기억하고 있어야 한다.

separator의 변형

아이템 사이에 공백 이외의 다른 것으로 바꾸고 싶다면, separator에 다른 문자열을 입력하면 된다.

print(3, 2, 1, separator: " -> ") // "3 -> 2 -> 1\n" 출력

terminator 변형

print 함수를 매번 호출할 때마다 줄바꿈 문자("\n")가 출력 되는데, 이것을 제외하고 출력하고 싶다면 terminator에 빈 문자열을 입력하면 된다.

for n in 1...3 {
    print(n, terminator: "")
}
// "123" 출력

 

Q: print로 여러 변수를 입력하는 것은 보간법(interpolation)인가?

보간법의 정의

보간법(interpolation)은 한 문자열에 다른 변수의 값을 문자열로 변환하여 원하는 위치에 끼워넣는 것을 의미한다.
let name = "Andy"
let age = 20

let aString = "I'm \(name), and I'm \(age) years old."

print(aString) // "I'm Andy, and I'm 20 years old.\n" 출력

A: 보간법이 아니다!

print로 여러 변수를 입력하는 것은 separator의 기본값이 공백 문자가 있어서 보간법으로 보일 수 있지만, 단순히 여러 변수를 이어서 출력하는 것일 뿐이다.

댓글