【问题标题】:How to write a function which returns an optional array of strings from a dictionary variable?如何编写一个从字典变量返回可选字符串数组的函数?
【发布时间】:2019-06-11 08:14:36
【问题描述】:

我有一个函数 func synonyms(for:) --> [String : [String?]]
我想让它返回一个可选数组(字符串)。我有一个字典变量([String : [String]]),它看起来像一个单词(键)和数组(值,该单词的 4-6 个不同的同义词之间的任何位置)。 为了实现这一点,我认为为了返回传入单词的同义词,我实际上需要告诉计算机从我的userinput(TextField、ViewController,并且我正在使用 UI 委托)中找到匹配的键。为此,我使用了一个 for-in 循环。这里的问题是编译器说“for”是一个“for循环”,而实际上它是用于我的同义词函数的参数/参数。 我在同义词函数里面写什么?

为了在此函数中返回传入单词的同义词,我需要告诉计算机从我的用户输入(TextField、ViewController 和我正在使用 UI 委托)中找到匹配的键。我尝试使用 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"]) 但是,没有括号和 Optional 那里。我希望这也显示在我的 iOS 应用程序的 TextView 中。我正在使用最新版本的 XCode 和最新版本的 Swift。

【问题讨论】:

  • 你在问什么?有什么问题?你不能在 UILabel 中显示你的同义词吗?你不会写函数吗?无论如何,您不能将关键字用作参数名称或标签,这是您使用的每种语言,因此您必须更改函数的“for”标签
  • 为什么可选 ([String?])?如果有 4-6 个同义词,则没有可选项。即使没有同义词,数组也只是空的。
  • @Andrew21111 你可以使用for作为标签,但不能作为参数名

标签: ios arrays swift dictionary optional


【解决方案1】:

我认为你需要这样的东西:

// 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: ", ")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-15
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2013-04-14
    相关资源
    最近更新 更多