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