2017-10-23 4 views
0

스칼라 패턴 일치와 함께, 객체 유형에 일치하는 패턴을 작성하는 것이 좋습니까? 자바의 instanceOf 연산자를 사용하는 것만 큼 나쁘지 않은가? 패턴 일치가 코드를 더 잘 보이게한다. 오브젝트 유형을 패턴 매칭하는 것이 이상적입니까?객체 유형에 스칼라 패턴 일치

abstract class Employee 
class Manager extends Employee 
class SE2 extends Employee 
emp match { 
    case m: Manager => ... 
    case s: SE2 => ... 
} 

는 이제 기본이 밀봉 특성

+0

'object.type'에서 일치시키고 싶은 구체적인 예를 들려 줄 수 있습니까? –

+0

기본 유형이 봉인 된 특성 인 경우 컴파일러는 '일치'사례가 전부가 아니라 모든 가능한 하위 유형을 포괄하지 않는 경우 경고합니다. 기본 유형이 봉인되지 않은 경우 좋은 기본'case' 만 필요합니다. – jwvh

+0

@jwvh하지만 런타임에 객체의 유형을 코드 냄새와 비교하지 않습니까? 패턴 일치는 단지 그것을 아름답게합니다. 결국 그것은 바로 아래 instanceof와 같은 것입니다. –

답변

0

이지만 코드 냄새 런타임에 개체의 유형을 비교하지 않을 경우이 유형의 패턴 일치에 괜찮아 이해? 패턴 일치는 단지 그것을 아름답게합니다. 결국 그저 instanceof와 같은 것일뿐입니다.

글쎄, 대안은 대개 가능하지 않은 (자신의 코드가 아닌 경우) 기본 유형에 추상 메소드를 추가하거나 패턴 일치보다 좋습니다 . 당신은 맹목적으로 그것을 결코 사용하지 않거나 항상 사용하지 말고 사례별로 판단 할 필요가 있습니다.

0

패턴 매칭 그냥

그것은 미화 : 더 많은 것보다는이

관련이없는 유형의 컴파일러에 대한 당신 패턴 일치가 경고를 줄 경우 아름답게. 봉인 된 성격과 일치하는 패턴을 놓친 경우와 동일합니다.