Как написать функцию, которая возвращает необязательный массив строк из словарной переменной? - PullRequest
0 голосов
/ 11 июня 2019

У меня есть функция, которая написана func synonyms(for:) --> [String : [String?]]
, и я хочу сделать так, чтобы она возвращала массив опций (Strings).У меня есть словарь переменной ([String : [String]]), которая выглядит как слово (ключ) и массив (значение, где-то между 4-6 различными синонимами для слова).Пытаясь достичь этого, я подумал, что для того, чтобы вернуть синонимы для переданного слова, мне нужно было бы сказать компьютеру, чтобы он нашел соответствующий ключ из моего userinput (TextField, ViewController, и я использую UI Delegate).Для этого я использую цикл for-in.Проблема здесь в том, что компилятор говорит, что «for» является «циклом for», когда на самом деле это мой аргумент / параметр для моей функции-синонима. Что я пишу внутри моей функции-синонима?

ВЧтобы вернуть синонимы для переданного слова в этой функции, мне нужно указать компьютеру найти соответствующий ключ из моего пользовательского ввода (TextField, ViewController, и я использую UI Delegate).Я пытался использовать цикл for-in.Проблема в том, что компилятор говорит, что for является циклом for, хотя на самом деле это мой аргумент / параметр для моей функции синонимов.

    func synonyms(for: String) -> [String: [String?]] {
        let synonynmsAre = "your synonyms \(for) are)"
        return synonynmsAre
    }

    print(synonyms(for: "swift"))
    synonyms(for: "swift")

ваши синонимы Optional(["abrupt", "expeditious", "hasty", "nimble", "quick", "rapid", "speedy", "sudden", "unexpected"]), но без скобок иНеобязательно там.Я хочу, чтобы это также отображалось в TextView в моем приложении для iOS.Я использую последнюю версию XCode, а также последнюю версию Swift.

1 Ответ

2 голосов
/ 11 июня 2019

Я думаю, вам нужно что-то вроде этого:

// Basically where you store the synonyms
let synonymsDictionary = [
    "swift": ["foo", "bar", "baz"],
    "objective-c": ["NSFoo", "NSBar", "NSBaz"]
]

// Just return an optional array here
func synonyms(for word: String) -> [String]? {
    return synonymsDictionary[word]
}


// how to use

if let possibleSynonyms = synonyms(for: "swift") {
    print(possibleSynonyms.joined(separator: ", ")) // prints foo, bar, baz
    // or
    someLabel.text = possibleSynonyms.joined(separator: ", ")
}
...