2017-03-16 20 views
-5

我想弄清楚如何传递给一个函数的字符串可以在由元组组成的数组中找到。以下是我的代码。我不知道如何解决这个问题。检查字符串是否是元组数组的一部分 - 斯威夫特

typealias myTuple = (input: String, magnitude: Int)  

var userInput = "Happy"        

var wordOneArray: [myTuple] = [] 

var magnitudeCount = 1 

var userInputTuple: myTuple = (userInput, magnitudeCount) 


magnitudeCount += magnitudeCound 

func addUserInput(tempArray: myTuple) {  

    if wordOneArray.contains(userInput) { 

     userInputTuple = (userInput, magnitudeCount += magnitudeCount) 

    } 

    wordOneArray.append(userInputTuple) 

    print(wordOneArray) 


} 

addUserInput(tempArray: userInputTuple) 

userInput = "Sad" 

userInputTuple = (userInput, magnitudeCount) 

addUserInput(tempArray: userInputTuple) 
+0

您的预期产出是?你会得到什么错误,以及在哪些方面? – Hamish

+0

我在if语句行中发生错误“missing argument label'其中:'in call。在下一行中,'+ ='产生'()',而不是预期的上下文结果类型'Int '。我不知道为什么在第二个。第一个错误修复对我没有意义 –

+0

请用这个信息[编辑]你的问题。第一个错误的原因是你不能直接询问一个数组的元组包含一个字符串 - 你必须使用一个自定义谓词(因此为什么编译器提示'contains(where:)')。第二个错误的原因是'+ ='返回'Void'。把它从元组赋值中移出来,只需要赋值'magnitudeCount'而已 - 例如http://stackoverflow.com/q/36185088/2976878 – Hamish

回答

0

首先,你的代码不能编译:/

在任何情况下,你可以使用wordOneArray.contains(where: { $0.0 == userInput })找出如果元组包含字符串。

+0

谢谢。这会搜索数组中所有元组中的特定字符串?或者只是第一个? –

+0

它将遍历整个数组unt它找到一个匹配字符串的元组,如果它返回'true',否则返回'false'。 –

+0

好的真棒。那效果很好。唯一的最后一部分是我试图然后增加它找到的给定元组元素的“magnitudeCount”。我修改了我的代码,但它没有给出正确的输出。(另外,Stackoverflow不允许我在这里粘贴我的代码,它说它太长了评论)。如果找到匹配,你有没有想过如何增加magnitudeCount? –

相关问题