Microsoft Dev Blogs

New syntax for string interpolation in F#

    thumbnail

    새로운 F# 문자열 보간법 문법

    F#에서 문자열 보간법을 사용하는 문법에 새로운 구문이 도입되었습니다. 이 새로운 구문은 C#의 raw 문자열과 유사한 방식으로 동작하면서도 F#의 삼중 따옴표 문자열과의 하위 호환성을 유지합니다.

    문자열 보간법은 개발자들이 F# 표현식을 문자열 리터럴에 쉽게 삽입할 수 있는 편리한 방법입니다. 그러나 많은 중괄호가 포함된 텍스트를 처리해야 하는 경우 문자열 보간법을 사용하는 것이 불편할 수 있습니다. 이런 경우에 새로운 F# 문자열 보간법 구문을 사용하면 훨씬 간편하게 작업할 수 있습니다.

    개요

    이 새로운 구문은 Fable과 같은 프런트엔드 F# 애플리케이션에서 CSS 리터럴을 다룰 때 특히 유용합니다. 새로운 구문을 사용하면 중괄호를 이스케이프할 필요 없이 CSS를 작성할 수 있으므로 보간식 자체에 집중할 수 있습니다. 다음은 예시입니다.

    let color = "red"
    let backgroundColor = "white"
    let css = $"""
      .button {{
        color: {color};
        background-color: {backgroundColor};
      }}
    """
    

    기존의 문자열 리터럴에서 이스케이프 문자를 찾아 수정할 필요가 없으므로 작업이 훨씬 간편해집니다. 따라서 CSS를 읽는 데 익숙한 독자에게도 이해하기 쉽게 작성할 수 있습니다.

    구문

    새로운 구문은 기존의 문자열 보간법 구문을 확장한 것입니다. 이전에는 문자열 리터럴 앞에 단일한 문자를 추가하고 중괄호 안에 F# 표현식을 포함할 수 있었습니다. 자세한 내용은 F# 언어 참조 문서를 참조하십시오.

    이제는 여러 문자와 해당하는 개수의 중괄호를 사용하여 보간을 할 수 있으며, 동일한 규칙이 F# 보간된 문자열에서 형식 지정자로 사용되는 문자들에도 적용됩니다. 다음은 예시입니다.

    let name = "Alice"
    let age = 30
    let favoriteColor = "blue"
    let greeting = $"Hello, {name}! You are {age} years old. Your favorite color is {favoriteColor}."
    

    name, age, favoriteColor와 같은 변수를 보간하는 데 중괄호를 여러 개 사용할 수 있습니다. 형식 지정자로 사용되는 문자들에 대해서도 동일한 규칙이 적용됩니다.

    더 긴 시퀀스의 중괄호를 포함하는 리터럴을 만들어야 하는 경우에도 이 새로운 구문을 이용하여 이스케이프를 피할 수 있습니다. 이런 경우에는 더 많은 문자($``$, {{, }} 등)로 시작하고 같은 개수의 중괄호를 사용하면 됩니다. 다음은 예시입니다.

    let message = $""""""Hello, {{{name}}}! You are {age} years old. Your favorite color is {{{{favoriteColor}}}}.""""""
    

    중괄호의 개수를 세 봐야 이해하기 힘들 수 있지만, 중괄호를 이스케이프하는 것보다는 훨씬 간편한 방법입니다.

    사용해보기

    이 기능을 사용해 보려면 현재로서는 $feature:preview 플래그를 사용해야 합니다. 이 플래그는 실행 시에도 전달할 수 있고 파일의 맨 처음에 #option "feature:preview"와 같이 설정할 수도 있습니다.

    • $feature:preview 플래그 사용 예: dotnet fsi --langversion:preview your_script.fsx
    • 파일 맨 처음에 설정하는 예:
    #option "feature:preview"
    

    공식 문서 링크

    Adam Boniecki (번역)