Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

iOS Swift Functions and Optionals Parameters and Tuples Tuples

Jonathan Elder
Jonathan Elder
983 Points

How do i modify this code to return both the greeting and the language as a tuple?

Currently our greeting function only returns a single value. Modify it to return both the greeting and the language as a tuple. Make sure to name each item in the tuple: greeting and language.

tuples.swift
func greeting(#person: String) -> String {
    let language = "English"
    let greeting = "Hello \(person)"

    return greeting
}

let (greeting, language) = greeting(person: "Tom")

2 Answers

Don Miller
Don Miller
1,773 Points

You can name the tuples by using a name and colon:

func greeting(#person: String) -> (greeting: String, language: String) {
    let language = "Spanish"
    let greeting = "Hello \(person)"

    return (greeting, language)
}

let languageGreeting: (greeting:String, language:String) = greeting(person: "Tomas")
Jonathan Elder
Jonathan Elder
983 Points

that code is all correct but it wasn't the answer they were looking for apparently. It still gave me the "Bummer! Your function needs to return a tuple with elements named 'greeting' and 'language'." error.

Don Miller
Don Miller
1,773 Points

I edited the code to name each of the tuple variables.

Jonathan Elder
Jonathan Elder
983 Points

last question

''' func greeting(#person: String) -> (greeting: String,language: String) { let language = "English" let greeting = "Hello (person)"

return (greeting, language)

}

let languageGreeting: (greeting:String, language:String) = greeting(person: "Tom")

var result = greeting(person: "Tom") println("(result)") '''

It prints "(Hello Tom, English)" it needs to print "English". How do i fix that?

Don Miller
Don Miller
1,773 Points
func greeting(#person: String) -> (greeting: String, language: String) {
    let language = "Spanish"
    let greeting = "Hello \(person)"

    return (greeting, language)
}

let languageGreeting: (greeting:String, language:String) = greeting(person: "Tomas")

languageGreeting.language  //choose one of the defined