추론된 타입

추론된 타입 (Inferred Types)

다른 정적 타입 언어들처럼 Scala에서도 변수를 만들 때 타입을 선언할 수 있어요.

출처: Scala 3 Book

본문

val x: Int = 1
val y: Double = 1

위 예제에서는 타입을 각각 IntDouble로 명시적으로 선언했어요. 하지만 Scala에서는 값 바인더를 정의할 때 타입을 꼭 선언할 필요가 없어요.

val a = 1
val b = List(1, 2, 3)
val m = Map(1 -> "one", 2 -> "two")

이렇게 쓰면 Scala가 타입을 추론(infer)해요. 다음 REPL 상호작용에서 그 모습을 확인할 수 있어요.

scala> val a = 1
val a: Int = 1

scala> val b = List(1, 2, 3)
val b: List[Int] = List(1, 2, 3)

scala> val m = Map(1 -> "one", 2 -> "two")
val m: Map[Int, String] = Map(1 -> one, 2 -> two)

실제로 대부분의 변수는 이렇게 정의돼요. Scala가 타입을 자동으로 추론해 주는 능력은, 스스로 동적 타입 언어처럼 느껴지게 만드는 특징 중 하나예요.

더 알아보기

  • "A First Look at Types" 챕터 (Scala 3 Book)
  • Scala 3 Reference 문서의 타입 추론 섹션