F.R.I.D.A.Y.

Kotlin: 03 출력하기 본문

DEV/Kotlin

Kotlin: 03 출력하기

F.R.I.D.A.Y. 2020. 3. 24. 22:12
반응형

 이전 시간에 잠시 출력에 대한 내용이 포함되어 있었습니다. 이번 포스트에서는 잠시 논외로 벗어나 출력하는 방법에 대해 알아봅니다.


출력하기

https://ko.dict.naver.com/#/entry/koko/e9c873897bcf4993829a84abc25b91dd

 입력은 대개 사용자들로부터 어떤 값을 작성해 그 값을 프로그램에 넣는 의미로 생각할 수 있는데, 이것에 그치지 않고 마우스 클릭, 키보드 입력 등 모든 행위를 입력이라고 볼 수 있습니다.

출력 함수

 코틀린의 기본적인 출력 함수는 크게 두 가지가 있습니다.

println("print string with new line")
print("print string without new line")

 내용의 설명과 같이 println 함수는 출력이 끝나면 마지막에 새로운 줄로 이동하는 개행 문자를 넣는 반면, print 함수의 경우에는 문자열 출력만을 진행합니다. 그래서 print 함수를 사용한 뒤에 이어서 바로 출력을 하면 아래 이미지와 같이 이어져 나오게 되죠.

print 함수의 출력 결과. 출력 결과가 모두 한 줄로 이어져 있는 모습
println 함수를 이용했을 때. 각 함수가 출력하는 문자열 다음에 개행문자가 추가되어 새로운 줄에서 출력이 이루어진다.

변수 출력

 이전 시간에 간단한 두 가지 방법을 설명했습니다.

val str:String = "hello world"
println(str)     // 변수를 인자로 넘기기
println("$str.") // 문자열 상수 안에 변수명 앞에 접두사 $를 붙여 출력하기

 두 방법 모두 변수의 값을 출력하는 것에는 문제가 없지만 문자열을 이용하는 두 번째 방법이 조금 더 유연한 출력이 가능하겠네요.

 그렇다고 첫 번째 방법에서 두 번째와 같이 추가 문자열을 입력하지 못하는 것은 아닙니다. 더하기 연산자를 활용하면 추가 출력이 가능합니다.

val str:String = "stars"
println(str + " with you")

 두 번째 출력의 경우에는 중괄호를 넣어 더욱 유연하게 활용할 수 있습니다. 두 값을 더해 출력하는 프로그램이 있다고 해봅니다.

fun main(args: Array<String>) {
	val i1 = 1
	val i2 = 3
	
	println("i1 + i2 = ${i1 + i2}")
}

 중괄호 안에 수식을 입력하고 중괄호 앞에 접두사 $를 입력해주면 해당 부분이 출력 전에 연산이 이루어집니다. 결국 출력 결과는 4가 되는 것이지요.

출력 결과

이스케이프 시퀀스

 접두사 $, 큰따옴표 등은 문자열에서 이미 그 기능이 정해져 있는 문자입니다. 예를 들어 큰따옴표의 경우에는 문자열 선언 중간에 넣고 싶다고 막 넣게 되면, 문자열 선언이 엉망이 되어버립니다.

val str:String = "Hello (") this mark name is double quotation"

 중간의 설명을 위해 작성한 큰따옴표가 되려 이후의 문자열 선언에 문제를 일으키게 됩니다. 이렇게 되면 문자열에서는 큰따옴표를 이용할 수 없는가? 그것은 아닙니다. 개발자들이 이 문제에 직면했을 때, 손쉽게 해결할 수 있도록 언어에서 해결법을 제공하고 있습니다.

 

 그것은 바로 이스케이프 시퀀스라 불리는 기능입니다. 이 기능을 이용하면 실제로는 문자열 선언에서 입력이 어려운 문자도 입력이 가능합니다.

이스케이프 문자 설명
\t 탭문자
\b 백슬래시
\' 작은따옴표
\" 큰따옴표
\$ 달러 기호
\\ 백슬래시 입력
... ...

 이스케이프 시퀀스로 제공되는 문자의 수는 위 표보다 많습니다.

원시 문자열 이용

 만일 이스케이프 문자를 사용하기 싫다면? 괜찮습니다. 다른 기능을 제공하니까요. 원시 문자열이라 불리는 기능이 있습니다. 이 기능은 HTML 태그 중 pre 태그와 유사한 기능을 제공한다고 생각하면 됩니다. 마치 파이썬이 생각나는 기능이네요.

val str:String = """
     시간은 절대적입니다.
     언제나 쉼 없이 달리죠.
     그래서 우리는 달립니다, 더 나은 삶을 위해.
     """

출력 결과

 단 이 기능을 이용하면 조금 아쉬울 수밖에 없습니다. 왼쪽에 입력했을 때 들여 쓰기를 한 만큼 출력에서도 들여 쓰기 때문이죠. 이 문제를 해결하는 방법은 간단합니다.

 trimMargin()

 기능을 이용하면 됩니다.

val str:String = """
     |시간은 절대적입니다.
     |언제나 쉼 없이 달리죠.
     |그래서 우리는 달립니다, 더 나은 삶을 위해.
     """.trimMargin()

와 같이 입력하는 문장마다 앞에 파이프[#| 키보드 상단의 원화, 혹은 역슬래시 기호를 Shift와 함께 누르면 작성됨]를 입력하고, 원시 문자열이 끝나는 """ 뒤에 trimMargin 함수를 추가로 작성해주면 됩니다.

 이렇게 작성하면 trimMargin()에 의해 앞선 들여 쓰기 공백이 사라지게 됩니다. 만일 파이프가 아닌 다른 문자로 바꾸고 싶다면 아래처럼 이용하세요.

val str:String = """
     #시간은 절대적입니다.
     #언제나 쉼 없이 달리죠.
     #그래서 우리는 달립니다, 더 나은 삶을 위해.
     """.trimMargin("#")

Next.

 

Kotlin: 04 자료의 비교와 변환

이번 시간에는 자료를 비교하고 특정 자료형을 다른 자료형을 변환하는 방법을 알아봅니다. # 처음 프로그래밍을 접하는 분들께는 생소하고 어려울 수 있습니다. 알아두기 이 포스트를 이해하기 위해서는 한 가지..

pang2h.tistory.com

# index

728x90
반응형

'DEV > Kotlin' 카테고리의 다른 글

Kotlin: 05 연산자  (0) 2020.03.28
Kotlin: 04 자료의 비교와 변환  (0) 2020.03.27
Kotlin: 02 변수와 자료형  (1) 2020.03.23
Kotlin: 01 시작하기  (2) 2020.03.22
Kotlin: 00 Intro  (0) 2020.03.21
Comments