나는 기본적으로 그룹 형태의 배열이vararg 사례 클래스를 사용하여 패턴 일치를 수행하는 방법은 무엇입니까?
abstract class Shape
case class Rectangle(width: Int, height: Int) extends Shape
case class Location(x: Int, y: Int, shape: Shape) extends Shape
case class Circle(radius: Int) extends Shape
case class Group(shape: Shape*) extends Shape
같은 경우 클래스 세트가있다. 직사각형, 원 및 위치에 대한 크기를 계산하기위한 크기 메소드를 정의해야합니다. 그러나 나는 그룹에 어려움을 겪고있다.
object size extends Shape{
def size(s: Any) : Int = s match {
case Rectangle(x,y) => 1
case Group // how to do it? Also having case Group(shape : Shape*) gives an error
case Circle(r) => 1
case Location(x,y,shape) => 1
}
}
나는 그룹을 알고지도와 왼쪽으로 접을 필요가 있지만 실제로는 그럴 수 없다. 감사합니다.
이것은 중복을 설명하지 않습니다. 그게 중요합니까? – PanCrit
마지막 라인이 너무 이상하게 작동하는 방법을 설명해 주시겠습니까? 사례 그룹 (shapes @ _ *) => (0/: 도형) {_ + size (_)} – tom
@PanCrit : 스칼라에는 유창하지 않습니다. * 중복되는 부분에 대해 설명해 주시겠습니까? ? – Dario