Scala 타입과 선언
스칼라 타입 구조
-
Any
가 모든 타입들의 최상위 타입이다.Any
클래스에 euals, hashCode, toString 등의 범용 메소드가 정의되어있다. -
AnyVal
은 값타입 (Int
,Double
등..),AnyRef(Java=java.lang.Object)
는 참조타입을 대표한다. -
Java의
void
의 경우Unit
으로 표현된다.
스칼라 타입 캐스팅
-
스칼라는 위와 같이 값타입에 대해서 캐스팅할 수 있다.
-
단방향 캐스팅이며 역방향 캐스팅은 컴파일되지 않는다.
val x: Long = 987654321
val y: Float = x // 9.8765434E8
val z: Long = y // 적합하지 않음(캐스팅 불가)
Nothing, Null
Nothing
은 모든 타입의 최하위 타입. 아무 값이 없음을 의미. 문서에 따르면 예외, 프로그램 종료, 무한루프와 같은 비정상 종료 신호를 보내는 용도로 사용.Null
은 모든AnyRef
의 서브 타입. Null은 다른 JVM언어와의 상호 운용성을 위해 제공되고, 스칼라에서는 거의 사용하지 않아야한다. (대체로 Scala의Option
을 사용)
변수 선언
- var (mutable: 가변)
// var [변수 이름] = [값]
var a = 1
a = 2 // 컴파일 성공
- val (immutable: 불변)
// val [변수 이름] = [값]
val a = 1
a = 2 // 컴파일 실패
- 타입 선언
// [val or var] [변수 이름] : [타입] = [값]
val a : Int = 1
var b : Int = 1
a = 2 // 컴파일 실패
b = 2 // 컴파일 성공
- 익명 함수 선언
val a = (b : Int) => b + 1
a(1) // 2
함수 선언
- 리턴 타입 없이 함수 선언 (타입 추론)
def test(a : Int, b : Int) { // Int를 리턴한다고 추론
a + b
}
- 리턴 타입 명시
def test(a : Int, b : Int) : Int {
a + b
}
마치며
- 타입과 선언에 대해서 알아보았다. 선언문은
kotlin
,typescript
와 비슷하게 생겼다. 그래서 아마 이러한 언어들을 사용해보았다면 금방 적응할 수 있지 않을까..? 라는 생각을 한다. 본인도typescript
를 사용하다가 문득 scala가 편해보였으니까. - 다음장에서는 조건문과 반복문에 대해서 알아보도록 하겠다.
Author And Source
이 문제에 관하여(Scala 타입과 선언), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jiseok/Scala-선언저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)