임포트

임포트 (Imports)

와일드카드(wildcard)와 이름 바꾸기(renaming) 임포트(그리고 export)의 문법이 바뀌었어요.

출처: Scala 3 Reference

본문

와일드카드 임포트

와일드카드 임포트는 이제 밑줄(_) 대신 *로 표현해요. 예를 들어볼게요.

import scala.annotation.*  // imports everything in the annotation package

만약 *라는 이름의 멤버를 정확히 임포트하고 싶다면, 백틱으로 감싸면 돼요.

object A:
  def * = ...
  def min = ...

object B:
  import A.`*`   // imports just `*`

object C:
  import A.*     // imports everything in A

이름 바꾸기 임포트

임포트에서 이름을 바꾸거나 제외할 때는 이제 => 대신 as를 사용해요. 하나짜리 이름 바꾸기 임포트도 더 이상 중괄호로 감쌀 필요가 없어요. 예시를 보여드릴게요.

import A.{min as minimum, `*` as multiply}
import Predef.{augmentString as _, *}     // imports everything except augmentString
import scala.annotation as ann
import java as j

마이그레이션

크로스 빌딩을 지원하기 위해 Scala 3.0은 와일드카드에 _, 이름 바꾸기에 =>를 쓰는 옛 임포트 문법도 새 문법과 함께 지원해요. 옛 문법은 향후 버전에서 제거될 예정이에요. 옛 문법에서 새 문법으로의 자동 재작성은 -source 3.1-migration -rewrite 설정 아래에서 제공돼요.

문법

Import            ::=  ‘import’ ImportExpr {‘,’ ImportExpr}
ImportExpr        ::= SimpleRef {‘.’ id} ‘.’ ImportSpec
                    | SimpleRef `as` id
ImportSpec        ::=  NamedSelector
                    |  WildcardSelector
                    | ‘{’ ImportSelectors) ‘}’
NamedSelector     ::=  id [‘as’ (id | ‘_’)]
WildCardSelector  ::=  ‘*' | ‘given’ [InfixType]
ImportSelectors   ::=  NamedSelector [‘,’ ImportSelectors]
                    |  WildCardSelector {‘,’ WildCardSelector}

더 알아보기 (Learn more)