신규 블로그를 만들었습니다!
코틀린에는 문자열 템플릿이란 것이 있습니다. 문자열 안에서 외부에 있는 변수를 가져올 수 있는 방법입니다.
예를들어서 Java에서 "Hello, Kotlin!"을 찍어본다고 합시다. (이때 "Kotlin"은 name이라는 변수에 들어있습니다.)
String name = "Kotlin";
System.out.println("Hello, " + name + "!");
자바를 공부한 사람이 있다면 위와 같이 코드를 짤것입니다. 하지만 코틀린에서는 문자열 템플릿(String Templates)이란 기능을 제공하기 때문에 위와 같이 더하기 연산자(+)를 통해 문자열을 합칠 필요가 없습니다.
그렇다면, 코틀린에서는 위와 같은 코드를 어떻게 표현할까요?
fun main(args: Array<String>){
val name = "Kotlin"
println("Hello, $name!") // 자바의 ("Hello, " + name + "!") 와 같은 표현식
}
위에서 달러 기호($)가 보이시나요? 달러 모양을 쓰고 그 뒤에 호출하고 싶은 변수의 이름을 적어주면 변수의 값을 가져올 수 있습니다. 더하기 연산자(+)를 사용할 필요가 없어지기 때문에 간단하고 빠르게 코드를 작성 할 수 있습니다.
실행 결과
Hello, Kotlin!
Kotlin String Templates
코틀린의 문자열 템플릿에 대해 더 알아봅시다. 위에서 본것이 전부이긴 하지만, 주의해야 할 부분이 있습니다. 바로 변수뒤에 띄어쓰기 없이 이어서 다른 문자열을 출력하는 경우입니다. 말로 해서는 이해하기 힘드니, 아래예제를 살펴봅시다.
val answer = "Hongku"
println("$answer안녕")
위와같이 answer라는 변수뒤에 "안녕"이란 말을 출력하고 싶을때, 컴파일 에러가 발생합니다. "안녕"이란 문자열까지 변수이름으로 인식하기 때문입니다. 그래서 이때는 아래와 같이 중괄호({})를 사용해주는 것이 좋습니다.
val answer = "Hongku"
println("${answer}안녕")
중괄호를 이용하면 컴파일러는 에러를 발생하지 않습니다. 위와 같은 경우가 있기 때문에 항상 중괄호를 사용해 주는것이 좋습니다.(권장사항일 뿐, 원하지 않으면 중괄호를 사용하지 않아도 상관없습니다...)
실행 결과
Hongku안녕
중괄호 안에 식 넣기
사실 중괄호는 위 역할 뿐 아니라 다른 역할도 합니다. 바로 그 안에 식을 써넣을 수 있다는 것입니다.
println("Hello, ${if (args.size > 0) args[0] else "someone"}!")
if문을 넣을 수 있기 때문에, 간단하고 빠르게 코드를 작성 할 수 있습니다. 기존 Java방식을 따른다면, if문을 작성해야 하기 때문에 코드 4줄이 추가 될것입니다.
실행 결과
Hello, someone!
$를 문자열에 쓰고 싶을땐?
변수를 호출하는 것이 아니라, 달러 모양($)을 문자열에 쓰고 싶을때는 백슬래시(\)를 이용해서 이스케이프 문자로 사용할 수 있습니다. 아래 예제를 통해 확실히 알 수 있습니다.
println("\$name")
실행 결과
$name
읽어주셔서 감사합니다.
본 글은 Dmitry Jemerov, Svetlana Isakova의 "Kotlin in action" 책을 참고하여 작성한 글입니다.
다른 글
2019/02/04 - [Language/Kotlin] - 코틀린의 메소드 사용방법(Kotlin)
2019/02/04 - [Language/Kotlin] - 코틀린의 변수 사용법 및 val과 var의 차이점
2019/02/06 - [Algorithm/백준 온라인 저지] - 백준 11022번 A+b - 8, 코틀린으로 풀기
'Language > Kotlin' 카테고리의 다른 글
코틀린의 enum class 사용방법 (0) | 2019.02.10 |
---|---|
코틀린의 필드와 접근자(getter, setter) 사용방법 (0) | 2019.02.07 |
코틀린의 변수 사용법 및 val과 var의 차이점 (0) | 2019.02.04 |
코틀린의 메소드 사용방법(Kotlin) (0) | 2019.02.04 |
코틀린(Kotlin)이란 무엇인가? 정적 타입 지정 언어 (0) | 2019.02.03 |
최근댓글