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

Craig Ward
Craig Ward
1,149 Points

Swift Basics - Fucntion - Returing Complex Values Code Challenge

I am puzzled on this challenge. I have hunted for help and came accorss this solution:

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

However I receive this message: Bummer! Make sure you accept a single parameter of type String in your function declaration with the correct argument labels

I have used (location: String) but am at a loss. Cheers C

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

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

2 Answers

andren
andren
28,558 Points

The code is almost correct. The problem is that you do not give the string parameter an external name, which the challenge instructions specify that you have to do. Specifically you have to give it an external name of for. So the solution looks like this:

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

Thank you. I didn't fully understand that at first but that makes perfect sense as the 'for' is required outside fo the parenthesis Cheers C