2017-03-16 21 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? –

相關問題