c
은 Updatable
또는 Drawable
또는 모두 일 수 있다고 가정합니다. 모두 인 경우 먼저 Updatable
을 처리하고 싶습니다. 여러 유형의 스칼라 패턴 일치
case c: Updatable => c.update()
case c: Drawable => c.draw()
하나의 문제가있다 : 그것은 단지 선택 사항 중 하나 평가한다. 때로는 c
둘 다있을 수 있으므로이 두 가지를 모두 실행해야합니다.
case c @ (_: Updatable | _: Drawable) => c.update(); c.draw()
여기서 문제는 그것이 |
을 때문에 내가 update
과 draw
모두를 호출 할 수 있다는 것입니다 :
나는 다음과 같습니다 |
메커니즘이 알고있다.
은 내가 이런 식으로 뭔가를 찾고 있어요 생각하지만, 컴파일되지 않습니다 : 그런 일이
case c @ (_: Updatable & _: Drawable) => c.update(); c.draw()
case c: Updatable => c.update()
case c: Drawable => c.draw()
있습니까? 내가 열어서 isInstacenOf
이라고 쓸 수는 있겠지만 가능하다면 패턴 매칭을 선호한다.
이것은 환상적인 아이디어입니다. 왜 내가 이것을 생각하지 않았습니까? ;) –
이 문맥에 사용 된'with' 키워드는 연결됩니다 (분명히). 분리형/공용체 유형에 관심이 있다면이 환상적인 블로그를 확인하십시오. http://www.chuusai.com/2011/06/09/scala-union-types-curry-howard/ –