Какими хорошими учебниками на сгибе осталось?
Оригинальный вопрос, восстановленный из удаления, чтобы предоставить контекст для других ответов:
Я пытаюсь реализовать метод для поиска окна будильника прямоугольника, круга, местоположения и группы, которая все расширяет форму. Группа в основном представляет собой массив фигур
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 BoundingBox {
def boundingBox(s: Shape): Location = s match {
case Circle(c)=>
new Location(-c,-c,s)
case Rectangle(_, _) =>
new Location(0, 0, s)
case Location(x, y, shape) => {
val b = boundingBox(shape)
Location(x + b.x, y + b.y, b.shape)
}
case Group(shapes @ _*) => ( /: shapes) { } // i dont know how to proceed here.
}
}
Групповая ограничивающая рамка - это в основном самый маленький ограничивающий прямоугольник со всеми включенными формами.