Welcome to the Treehouse Community
The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Alex Nelsen
Courses Plus Student 2,977 PointsThere is some discrepancy between playground and the challenge.
So in my playground this works.
class Button {
var width: Double
var height: Double
init(width: Double, height: Double) {
self.width = width
self.height = height
}
func incrementBy(points: Double) -> (Double, Double) {
self.width = width + points
self.height = height + points
return( width, height)
}
} var newButton = Button(width: 3, height: 10) newButton.incrementBy(7)
class RoundButton: Button { var cornerRadius: Double = 5.0
override func incrementBy(points: Double = 7.0) -> (Double, Double) {
return super.incrementBy(points)
}
}
let rounded = RoundButton(width: 50, height: 50) rounded.incrementBy() rounded.incrementBy()
In the challenge I edited the super class method to return width and height since the method seems to create the same results as my method and return super.incrementBy(points) will keep it DRY. It fails in the challenge.
Any help would be appreciated.
class Button {
var width: Double
var height: Double
init(width:Double, height:Double){
self.width = width
self.height = height
}
func incrementBy(points: Double = 0.0) -> (Double, Double){
width += points
height += points
return (width, height)
}
}
class RoundButton: Button {
var cornerRadius: Double = 5.0
override func incrementBy(points: Double = 7.0) -> (Double, Double) {
return super.incrementBy(points)
}
}
1 Answer

Michael Reining
10,101 PointsHi Alex,
There are a couple of mistakes in your code.
Do not change the main Button class.
Set the parameter value to 7 inside the function so that regardless of what value you pass in, you always increment it by seven
There is no need to return a value from the function
The final result then looks like this.
class Button {
var width: Double
var height: Double
init(width:Double, height:Double){
self.width = width
self.height = height
}
func incrementBy(points: Double) { // don't change Button Class
width += points
height += points
}
}
class RoundButton: Button {
var cornerRadius: Double = 5.0
override func incrementBy( var points: Double) { // mark parameter with var to make it mutable
points = 7
self.width += points
self.height += points
}
}
I hope that helps,
Mike
PS: If you found the above helpful, be sure to check out my app which breaks code challenges down and really explains things so you can learn faster.
Code! Learn how to program with Swift
https://itunes.apple.com/app/code!-learn-how-to-program/id1032546737?mt=8
PPS: I could not have developed the above app without going through the awesome resources on Team Treehouse. Stick with it. It is so worth it!
Alex Nelsen
Courses Plus Student 2,977 PointsAlex Nelsen
Courses Plus Student 2,977 PointsYes that helped to solve the challenge. But why did Amit in his example go and change the method to include a return. Your method is simpler I feel.