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