Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

in swift playgrounds In the Height struct below, height is represented in both i

ID: 3751845 • Letter: I

Question

in swift playgrounds

In the Height struct below, height is represented in both inches and centimeters. However, if heightInInches is changed, heightInCentimeters should also adjust to match it. Add a didSet to each property that will check if the other property is what it should be, and if not, sets the proper value. If you set the value of the other property even though it already has the right value, you will end up with an infinite loop of each property setting the other.

Create an instance of Height and then change one of its properties. Print out the other property to ensure that it was adjusted accordingly.

says i have a problem with Height, says the declaration is wrong

struct Height {

var heightInInches: Double{

willSet {

print("About to set heightInINches to (15)")

}

}

didSet{

if heightInInches > oldValue {

print ("Added (heightInInches - oldValue) inches")

}

}

  

var heightInCentimeters: Double{

willSet{

print("About to set heightInCentimeters to (20)")

}

didSet{

if heightInCentimeters > oldValue {

print("Added (heightInCentimeters - oldValue) centimeters")

}

}

}

  

init(heightInInches: Double) {

self.heightInInches = heightInInches

self.heightInCentimeters = heightInInches*2.54

}

  

init(heightInCentimeters: Double) {

self.heightInCentimeters = heightInCentimeters

self.heightInInches = heightInCentimeters/2.54

}

}

Explanation / Answer

You placed the closing bracket for heightInInches after willSet and not after didSet

struct Height {

   var heightInInches: Double{
       willSet {
           print("About to set heightInINches to (15)")
       }

       didSet{
           if heightInInches > oldValue {
               print ("Added (heightInInches - oldValue) inches")
           }
       }
   }

   var heightInCentimeters: Double{
       willSet{
           print("About to set heightInCentimeters to (20)")
       }
       didSet{
           if heightInCentimeters > oldValue {
               print("Added (heightInCentimeters - oldValue) centimeters")
           }
       }
   }

   init(heightInInches: Double) {
       self.heightInInches = heightInInches
       self.heightInCentimeters = heightInInches*2.54
   }

   init(heightInCentimeters: Double) {
       self.heightInCentimeters = heightInCentimeters
       self.heightInInches = heightInCentimeters/2.54
   }
}