Scala 2.10의 새로운 기능 : String Interpolation
String Interpolation 은 스칼라 2.10에 추가된 데이터를 기반으로 문자열을 더 쉽게 만들수 있는 새로운 기능이다. 자세한 내용은 SIP-11 에 나와있다. String Interpolation은 s, f, raw 세가지의 방식을 제공한다.
s String Interpolator
1 2 |
|
문자열앞에 s를 붙혀서 사용하고 $변수명으로 변수의 내용을 참조할 수 있다.
1
|
|
그리고 위와 같이 ${}로 표현식 자체를 문자열 내에서 사용할 수도 있다.
f String Interpolator
1 2 3 |
|
f는 s와 동일하게 문자열 앞에 사용하고 변수명뒤에 다른 언어의 print문처럼 변수의 타입을 지정할 수 있다. 변수를 해당 타입으로 변환하는데 이 때 변환은 자바의 Fomatter 를 사용한다. f를 사용할 때는 타입세이프하므로 타입이 맞지 않으면 오류가 발생하고 변수명뒤에 %를 지정하지 않으면 %s(문자열)로 간주한다.
raw String Interpolator
raw는 s와 동일하지만 문자열을 이스케이프 하지 않는다.
1 2 3 4 5 6 7 |
|
String Interpolator 만들기
필요한 기능을 직접 String Interpolator로 만들 수도 있다. 기능적으로는 쓸모없지만 다음 예제를 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
bracket이라는 String Interpolator를 만들어서 변수에 대괄호를 자동으로 씌워주도록 만든 예제이다. 여기서 bracket"hello $name"라고 작성한 코드는 실제로는 다음과 같이 변환이 된다.
1 2 |
|
bracket을 실제 메서드 호출로 사용하게 되는데 여기서 bracket을 implicit으로 만들었으므로 이 코드는 다시 다음과 같이 변환된다.
1 2 3 |
|
위의 변환과정에서 보듯이 String Interpolator로 사용한 문자열은 StringContext의 parts로 전달되고 문자열내에서 사용한 표현식은 String Interpolator 메서드(여기서는 bracket)의 인자로 전달된다. String Interpolation 문서 에 나온대로 문자열을 받아서 JSON 객체로 변환해서 리턴하는 것도 가능하다. 현재 String Interpolator는 패턴매칭에서는 사용할 수 없다.(2.11에서 지원 예정)
Comments