Scala의 타입에 대해

No Image

Scala Type에 대해

Any

  • 모든 타입의 가장 상위 타입을 의미한다.
    • equals, hashCode, toString등을 담고 있다.
    • Java의 Object와 비슷해보인다.
  • Any는 AnyVal, AnyRef로 나눠진다.

AnyVal

  • value Type을 의미 한다.
  • scala에는 사전에 미리 정의된 9가지의 value type이 있다.
  • 모두 non-nullable하다.
    • Double, Float, Long, Int, Short, Byte, Char, Unit, Boolean
  • Unit은 의미가 없음을 의미합니다.
    • Java의 마치 void와 비슷해보인다.

AnyRef

  • reference Type을 의미 합니다.
  • value type이 아닌 타입들이 존재합니다.
  • JVM에서 Scala를 사용하는 경우 자바의 java.lang.Object와 일치합니다.

Example

val list: List[Any] = List(
  "a string", // -> a string
  732,  // an integer // -> 732
  'c',  // a character
  true, // a boolean value
  () => "an anonymous function returning a string" // -> <function>
)

list.foreach(element => println(element))

Type Casting

  • Byte -> Short -> Int -> Long -> Float -> Double
  • Char -> Int

Example

val x: Long = 987654321
val y: Float = x  // 9.8765434E8

val face: Char = '😂'
val number: Int = face  // 9786

Example - not compile

  • Float에서 Long으로 Compile이 되지 않는다.
    val x: Long = 987654321
    val y: Float = x  // 9.8765434E8
    val z: Long = y  // Does not conform
    

Nothing과 Null

  • Nothing
    • 모든 Type의 sub-type입니다.
    • value가 없다라는 것을 의미합니다.
    • 보통 예외를 던지거나 비정상 종료인 경우 Nothing을 반환합니다.
  • Null
    • null을 의미하는 Single Value입니다.
    • Null은 주로 다른 JVM 언어와의 호환을 위해 제공됩니다.
    • 스칼라 코드에서는 거의 사용되지 않습니다.

정리하며

Reference

0%