2016-09-06 3 views
6

`사례가 '특정 상황의 사례입니다. 발생하는 일례는 '입니다.케이스 클래스의 이름이 'case'인 이유는 무엇입니까?

제 질문은 왜 '스칼라'사례 '클래스의 이름이'대소 문자 '로 지정 되었습니까? 요점이 뭐야? 왜 '데이터'클래스가 아닌 '사례'입니까? 이 경우의 의미는 무엇입니까?

+1

주로 패턴 일치 _ 표현식의 패턴으로 사용할 수 있기 때문에 추측합니다. 'myVal match {case MyCaseClass (a, b) => ...}', 각각의 사례 클래스는 별개의 사례입니다 ... –

+0

누구든지 가까운 결론을 내린 사람에게 : 나는이 질문이 너무 광범위하다고 생각하지 않습니다. – pedrofurla

+0

분명히, 케이스 클래스는 데이터 필드의 컨테이너 일뿐입니다. 가방은 슈트의 컨테이너입니다. –

답변

8

다른 언어로 case 키워드의 주요 용도는 대부분 enum의 또는 같은 비교 값에 사용되는 switch -statements에 "세가지 경우가 ... 우리가 여기 고려해야있다" int의 또는 string의 다른 잘 정의 된 경우 표시하는 데 사용되는 :이 클래스는 종종 추상 클래스의 특정 잘 정의 가능한 인스턴스를 대표하고 거의 같은 방식 필수적 코드에 사용되는 스칼라

switch (value) 
{ 
    case 1: // do x - 
    case 2: // do y - 
    default: // optional 
} 

을 유 match -clauses 내에서 SES의 스위치 문 : 케이스 클래스의 동작의

value match { 
    case Expr(lhs, rhs) => // do x 
    case Atomic(a) => // do y 
    case _ => // optional, but will throw exception if something cannot be matched whereas switch won't 
} 

많은 같은 방법으로 그들은 같은 문에서 사용을 가능/촉진에 목표를 구성 할 수있다.

+0

Java와 유사하기 때문에 처음에는 자바 스위치를 제대로 사용하기가 어렵습니다. 키워드가 다르고, 아마도'match'를 재사용하기를 바란다. 사례는 단순한 패턴이므로'{match p1 =>}'. 아마도 그 사실이 명확하고 키워드를 저장할 수도 있습니다. 그들은 왜 그렇게하지 않았습니까? (NL을 추측하는 것은 까다로울 수 있습니다. '{match p1 => x match 등}') –

1

패턴 매칭에 사용할 수 있기 때문입니다. A 케이스 영어 사용 방법 중 하나; 패턴 일치가 당신을 위해 작동합니다.

예를 들어,

+0

패턴 매칭을 통해 "작동"하지 않지만 패턴 매칭에 사용할 수 있습니다. Midor의 대답의 마지막 문장은 훨씬 더 좋은 공식입니다. –

관련 문제