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 2010-02-16 17:53:32
可否請你解釋我的最後一行如何工作,它的方式太奇怪了????? case組(shapes @ _ *)=>(0 /:shapes){_ + size(_)} – tom 2010-02-16 17:59:35
@PanCrit:我不是那麼流利的Scala - 你能解釋一下* overlap重要嗎? ? – Dario 2010-02-16 18:13:12