Swift元组

Tuples with Swift

嘿,所以我花了两个多小时试图解决这个问题,但我做对了。我猜我正在犯一个非常简单的错误,因此,如果有人可以将我指向正确的方向,我将非常感激,谢谢!顺便说一句,这是一棵树屋课程。

"当前,我们的greeting函数仅返回一个值。对其进行修改以将问候语和语言都作为一个元组返回。请确保在元组中命名每个项目:greeting和language。我们将在其中打印它们下一个任务。"

1
2
3
4
5
6
7
8
9
func greeting (language: String, greeting: String) -> (String, String) {

    let language ="English"
    let greeting ="Hello"

    var found = ("\\(language)","\\(greeting)")

    return found
}

我收到的错误消息是

1
2
3
swift_lint.swift:13:12: error: '(String, String)' is not convertible to 'String'
    return found
           ^

现在,在课程学习中,他们将String和Bool转换为工作状态,但是当您拥有两个相同类型的内容时,他们并没有解释该怎么做。我以为是将其转换为(String,String),但是出现了这个错误。

感谢您的帮助!


我认为您将用于元组的标签放在错误的位置,即参数放置的位置。据我了解,您的函数应该没有任何参数。

1
2
3
4
5
6
7
func greeting() -> (language: String, greeting: String) {

    let language ="English"
    let greeting ="Hello"

    return (language, greeting)
}

这将返回一个命名的元组。

1
2
3
let greet = greeting()
println(greet.language)
println(greet.greeting)

我同意您正在尝试设置输入变量。这也可能更有趣。此函数查找语言的问候语(目前仅定义一种语言问候语):

1
2
3
4
5
6
7
8
9
10
11
func greeting (language: String) -> (String, String) {

    var greetingDictionary = [String: String]() // Create an empty dictionary
    greetingDictionary["English"] ="Hello"     // Add an object"Hello" for key"English"

    let greeting:String = greetingDictionary["English"]! // set greeting to the greeting for English

    var found = (language, greeting) // Return a tuple

    return found
}

如果通过以下方式调用:

1
2
var greetingFound = greeting("English")
println("In \\(greetingFound.0) the greeting is \\(greetingFound.1)") // Demonstrate tuple access

打印此:

用英语问候是你好

编辑:

糟糕;我的错误,该功能实际上应该是:

1
2
3
4
5
6
7
8
9
10
11
func greeting (language: String) -> (String, String) {

    var greetingDictionary = [String: String]() // Create an empty dictionary
    greetingDictionary["English"] ="Hello"     // Add an object"Hello" for key"English"

    let greeting:String = greetingDictionary[language]! // set greeting to the greeting for the language passed in

    var found = (language, greeting) // Return a tuple

    return found
}