From af6f5797a5c7104d16a7b6b18cdfb12d5bb06955 Mon Sep 17 00:00:00 2001 From: Russ Hyde Date: Sun, 20 Jan 2019 20:30:09 +0000 Subject: [PATCH] fix bug in solution 4.3: use def not val in trait Exercise 4.1.4.3 Shaping Up 2 (Da Streets) had a bug. Using the code as it existed meant that `new Square(2.0).perimeter` was 0.0 (instead of 8.0) This occurred because the `override val perimeter = 2 * ...` was evaluated at the definition of trait Rectangular, rather than after creation of a new Square object. The definition of `perimeter` and `area` should have used `def` or `lazy val`; the preceding text recommended using `def` within `traits`. Hence the change. --- src/pages/traits/traits.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/traits/traits.md b/src/pages/traits/traits.md index 0dc38cf..02ff66c 100644 --- a/src/pages/traits/traits.md +++ b/src/pages/traits/traits.md @@ -282,8 +282,8 @@ sealed trait Rectangular extends Shape { def width: Double def height: Double val sides = 4 - override val perimeter = 2*width + 2*height - override val area = width*height + override def perimeter = 2*width + 2*height + override def area = width*height } case class Square(size: Double) extends Rectangular {