제거됨: Scala 2 매크로

제거됨: Scala 2 매크로 (Scala 2 Macros)

기존의 실험적 매크로 시스템은 Scala 3에서 빠졌어요. 그 자리에는 더 깔끔하고 제한된 새 시스템이 들어섰습니다.

출처: Scala 3 Reference

본문

이전의 실험적 매크로 시스템은 제거됐어요.

대신 inline'{ ... } / ${ ... } 코드 생성이라는 두 가지 보완적인 개념에 기반한, 더 깔끔하고 제한된 시스템이 있어요. '{ ... }는 코드의 컴파일을 지연시켜 코드를 담은 객체를 만들어내고, 그와 짝을 이루는 ${ ... }는 코드를 만들어내는 표현식을 평가해 주변 ${ ... } 안에 끼워 넣어요. 이 설정에서 ${ ... }를 포함한 inline으로 표시된 정의가 매크로가 되는데, ${ ... } 안의 코드는 컴파일 타임에 실행되어 '{ ... } 형태의 코드를 생성합니다. 추가로, 더 복잡한 리플렉션 API를 '{ ... } / ${ ... } 프레임워크의 확장으로 사용해 코드의 내용을 검사하고 만들어낼 수도 있어요.

  • inline은 Scala 3에서 구현됐어요.
  • 쿼트 '{ ... }와 스플라이스 ${ ... }도 Scala 3에서 구현됐어요.
  • TASTy reflect는 쿼트된 코드를 검사하거나 만들어내기 위한 더 복잡한 트리 기반 API를 제공합니다.

더 알아보기 (Learn more)