I'm VERY new to programming and Swift. Why won't a simple print(getDetails()) at the bottom of the getDetails function suffice to get the output? It always returns an error "Expected '{' in body of function declaration".
Here's the code...
struct Car {
let make:String = "MINI"
let model:String = "COOPER"
let year:String = "2015"
var details:String {
return year " " make " " model
}
func getDetails() -> String {
return details
}
print(getDetails())
}
CodePudding user response:
At the top level of a struct or class, you're only allowed to define functions and properties. For example, your let make:String = "MINI" or func getDetails() -> String { ... } are valid top-level declarations.
You are not, however, allowed to put imperative code that doesn't define a function or property (like print("")) at the top level of a type like this.
If you were in a Swift playground, you can put imperative code at the top level of the file (not of the struct or class). So, this would be valid:
struct Car {
let make:String = "MINI"
let model:String = "COOPER"
let year:String = "2015"
var details:String {
return year " " make " " model
}
func getDetails() -> String {
return details
}
}
let myCar = Car()
print(myCar.getDetails())
Since all getDetails does is return details, it's a bit superfluous, so we could refactor to just this:
struct Car {
let make:String = "MINI"
let model:String = "COOPER"
let year:String = "2015"
var details:String {
return year " " make " " model
}
}
let myCar = Car()
print(myCar.details)
