Tôi có một tập hợp các trường hợp lớp học như thế nàyLàm thế nào để thực hiện khớp mẫu với các trường hợp 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
nơi cơ bản Group là một mảng của hình dạng. Tôi cần phải xác định một phương pháp kích thước cho các kích thước máy tính cho hình chữ nhật, hình tròn và vị trí của nó đơn giản chỉ cần trả lại một. Nhưng tôi đang gặp khó khăn cho Tập đoàn.
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
}
}
Tôi biết cho Nhóm i cần sử dụng bản đồ và gấp trái, nhưng tôi thực sự không thể tạo logic cho nó. Cảm ơn
Điều này không tính đến các trùng lặp. Điều đó có quan trọng không? – PanCrit
bạn có thể vui lòng giải thích cho tôi cách dòng cuối cùng hoạt động theo cách của nó quá lạ ????? trường hợp Nhóm (hình dạng @ _ *) => (0 /: hình dạng) {_ + size (_)} – tom
@PanCrit: Tôi không thông thạo Scala - Bạn có thể giải thích ý nghĩa của từ * trùng lặp * không ? – Dario