[Scala] case class

smlee·2023년 8월 11일
0

Scala

목록 보기
13/37
post-thumbnail

Scala는 case class를 지원하는데, case class는 아래와 같은 특징을 가지는 일반 클래스이다.
1. 기본적으로 불변
2. 패턴 매칭을 통해 분해가능
3. 레퍼런스가 아닌 구조적인 동등성으로 비교됨
4. 초기화와 운영이 간결함
5. 자동 코드 생성 - toString, hashCode, equals를 자동으로 생성한다. 컴파일러가 불변 객체를 지원하기 위해서 새로운 복제 객체를 리턴하는 copy() 메서드를 자동으로 생성해준다.

case class는 인스턴스를 생성할 때 new 키워드를 사용하지 않는다는 특징이 있다.

패턴 매칭
Scala의 범용적인 빌트인 패턴 매칭으로, 매칭 정책에 따라 어떤 종류의 데이터든 매칭할 수 있도록 해준다.
_는 어떤 값도 일치하지 않을 때 처리 결과를 출력한다.

param match {
	case value1 => "value1"
    case _ => "default value"
}

와 같이 일치하는 것만 출력할 수 있도록 하는 것이다.

이때 주의해야 할 부분은, match 내부는 고유한 스코프를 갖는다는 것이다.
위의 예시를 보면 answer 위에 target이 있는데 해당 변수가 사용된 적이 없다고 나온다. 이를 주의해야 한다.

📚 Reference

0개의 댓글