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 trial

iOS Functions in Swift Adding Power to Functions Returning Complex Values

Adrian Yao
Adrian Yao
1,002 Points

I do not understand external and local names here?

I think thats the main problem? is there anything else wrong with the code?

functions.swift
// Enter your code below

func coordinates(for location: Strings) -> (Lat: Double, Lon: Double) {
switch for {
case Eiffel Tower: return(48.8582, 2.2945)
case Great Pyramid: return(29.9792, 31.1344)
case Sydney Opera House: return(33.8587, 151.2140)
default: return(0,0)
}
}

1 Answer

Everything is correct, except you are switching on the external name. The correct way to do this is like so:

func coordinates(for location: String) -> (Double, Double) {
    switch location {
        case "Eiffel Tower": return(48.8582, 2.2945)
        case "Great Pyramid": return(29.9792, 31.1344)
        case "Sydney Opera House": return(33.8587, 151.2140)
    default: return(0, 0)
    }
}

Because location is the local name, that is what you switch on. Maybe rewatch the corresponding videos to brush over this concept.

Anyway, I hope this helped :)

EDIT -- I just reread it: It is possible it doesn't matter whether you switch on the local or external name. The main problem is that the cases are not strings, and are just typed

 case "Eiffel Tower": return(48.8582, 2.2945)
        case "Great Pyramid": return(29.9792, 31.1344) // Correct
        case "Sydney Opera House": return(33.8587, 151.2140)
 case Eiffel Tower: return(48.8582, 2.2945)
        case Great Pyramid: return(29.9792, 31.1344) // Incorrect
        case Sydney Opera House: return(33.8587, 151.2140)
Adrian Yao
Adrian Yao
1,002 Points

func coordinates(for location: Strings) -> (Lat: Double, Lon: Double) { switch location { case "Eiffel Tower": return(48.8582, 2.2945) case "Great Pyramid": return(29.9792, 31.1344) case "Sydney Opera House": return(33.8587, 151.2140) default: return(0,0) } }

It still says "Make sure you accept a single parameter of type String in your function declaration with the correct argument labels"? Help is appreciated. Thanks.

Ohhh. I see!

You have typed

func coordinates(for location: Strings)

instead of:

func coordinates(for location: String)

You made 'String' plural.