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

Abhishek Kambli
Abhishek Kambli
2,657 Points

Hi, I am not able to pass through this question, but it runs perfectly in xCode

//Here is my code

func coordinates(forLocation location: String) -> (Double, Double) {

var lat: Double = 0.0, lon: Double = 0.0

switch location {
case "Eiffel Tower": lat = 48.8582; lon = 2.2945
case "Great Pyramid": lat = 29.9792; lon = 31.1344
case "Sydney Opera House": lat = 33.8587;  lon = 151.2140
default: return (0,0)
}

return (lat, lon) }

coordinates(forLocation: "Eiffel Tower")

functions.swift
func coordinates(forLocation location: String) -> (Double, Double) {

    var lat: Double = 0.0, lon: Double = 0.0

    switch location {
    case "Eiffel Tower": lat = 48.8582; lon = 2.2945
    case "Great Pyramid": lat = 29.9792; lon = 31.1344
    case "Sydney Opera House": lat = 33.8587;  lon = 151.2140
    default: return (0,0)
    }

return (lat, lon)
}

coordinates(forLocation: "Eiffel Tower")

1 Answer

andren
andren
28,558 Points

The challenge specifies that the function's parameter should have an external name of "for" not "forLocation" like you have named it. Fixing that will allow you to pass the challenge.

Though it's also worth noting that your code could be simplified a bit as it is more verbose than it needs to be. You don't need to create lat, long variable and set those in the switch statement. Since those values are only used once you can just return them directly within the switch statement like this:

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)
    }
}

That is just a bit of a tip for future reference, since either way works for this challenge.