Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialRyan Maneo
4,342 PointsUnable to understand instruction
So frustrating. I simply do not understand the instruction AT ALL. A few questions:
Can someone please rephrase this question with more detail and instruction?
Can someone give me tips on how to read programming instructions? Confused?
Thanks... :/
class Person {
let firstName: String
let lastName: String
init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
func getFullName() -> String {
return "\(firstName) \(lastName)"
}
}
// Enter your code below
class Doctor {
override init getFullName {
}
}
let someDoctor = Doctor(firstName: "Sam", lastName: "Smith")
3 Answers
Lindsay Sauer
12,029 PointsMake sure that you changed
class Doctor {
to
class Doctor:Person {
Lindsay Sauer
12,029 PointsHey Ryan,
You're very close! Let's go through the errors one by one as we update the code:
error: method does not override any method from its superclass
This means that your override function getFullName is not overriding anything, because it doesn't see what it's supposed to override. This is because the class Doctor does not inherit anything from class Person as it's currently not a subclass of Person. So to solve this error, you'll want to change your Doctor class to:
class Doctor:Person {
Next let's look at this error:
error: expected '(' for initializer parameters
override init getFullName {
Look at your override funciton getFullName. Functions must be followed by parenthesis, so change it to:
override init getFullName() {
There's one other thing to change here before we try to recompile: we don't need to override the init, we want to override the function getFullName. Change init to func.
override func getFullName() {
Once that's changed and you try to compile, the next error is:
error: method does not override any method from its superclass
override func getFullName() {
This might be a bit confusing as it doesn't exactly tell you what's wrong, but what's missing is a typecast:
override func getFullName() -> String {
Compiling from there, the next error tells us that we aren't returning anything:
error: missing return in a function expected to return 'String'
This is where we need to change how the getFullName function behaves (what exactly we are overriding in the subclass function). In the challenge instructions, it asks you to return "Dr." followed by the last name:
return "Dr. \(lastName)"
Ryan Maneo
4,342 PointsDoesn't seem to work... http://hastebin.com/wecigebiqu.coffee The error said I need to check the implementation of the "Person" inheritance?
Ryan Maneo
4,342 PointsRe-read the code if you can... it is already that... http://hastebin.com/wecigebiqu.coffee
Lindsay Sauer
12,029 PointsLooks like you have a space after the colon.
Ryan Maneo
4,342 PointsStill no. :/
Lindsay Sauer
12,029 PointsBut a different error? I see you didn't use the return value from above:
return "Dr. \(lastName)"