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이 있는데 해당 변수가 사용된 적이 없다고 나온다. 이를 주의해야 한다.