Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-比较单词和过滤_Ios_Swift - Fatal编程技术网

Ios Swift-比较单词和过滤

Ios Swift-比较单词和过滤,ios,swift,Ios,Swift,我刚开始学习Swift,并试图为iOS做一个作业 我有4类关键词,例如: CategoryX: hello, bye, good, bad CategoryY: rain, sun CategoryZ: sun, hello, what, rain CategoryV: yes, no, bad, music, song, note 我要做的是将这些类别相互比较,结果将给出choosen类别中的关键字 例如,如果我选择比较所有类别,结果将为:null (因为没有出现在所有类别中的关键字) 但是

我刚开始学习Swift,并试图为iOS做一个作业

我有4类关键词,例如:

CategoryX: hello, bye, good, bad
CategoryY: rain, sun
CategoryZ: sun, hello, what, rain
CategoryV: yes, no, bad, music, song, note
我要做的是将这些类别相互比较,结果将给出choosen类别中的关键字

例如,如果我选择比较所有类别,结果将为:null (因为没有出现在所有类别中的关键字)

但是如果我选择X和Z,那么结果将是:你好

如果是Y和Z,那么它是:太阳,雨

我不是要求任何人给我写代码(但如果有人给我一个启动码,ofc会很好),我只是想解释一下如何处理这个问题,以及如何使用正确的方法,有人能解释一下吗

多谢各位

我不是要求任何人给我写代码(但如果有人给我一个启动码,ofc会很好),我只是想解释一下如何处理这个问题,以及如何使用正确的方法,有人能解释一下吗

好的,在不给出答案的情况下,这里有一个关于如何处理这个问题的提示,给你一个领先的开始

这个作业不让你想到集合吗?还记得你高中时做的维恩图解吗?还记得集合交集的概念吗?想想看。想想布景。六羟甲基三聚氰胺六甲醚。。。斯威夫特有一套结构

如果你遵循这个想法,研究Swift中的集合是什么,你就会知道该怎么做

我不是要求任何人给我写代码(但如果有人给我一个启动码,ofc会很好),我只是想解释一下如何处理这个问题,以及如何使用正确的方法,有人能解释一下吗

好的,在不给出答案的情况下,这里有一个关于如何处理这个问题的提示,给你一个领先的开始

这个作业不让你想到集合吗?还记得你高中时做的维恩图解吗?还记得集合交集的概念吗?想想看。想想布景。六羟甲基三聚氰胺六甲醚。。。斯威夫特有一套结构

如果你遵循这个想法,研究Swift中的集合是什么,你就会知道该怎么做

你可以试试

let set1 = Set(["123","456","789"])
let set2 = Set(["123","456"])
let set3 = Set(["123"])
let res12 = set1.intersection(set2)  // ["123","456"]
let res123 = set1.intersection(set2).intersection(set3)  // ["123"]
你可以试试

let set1 = Set(["123","456","789"])
let set2 = Set(["123","456"])
let set3 = Set(["123"])
let res12 = set1.intersection(set2)  // ["123","456"]
let res123 = set1.intersection(set2).intersection(set3)  // ["123"]

写得很开心,所以我把它贴在这里。如果你现在还没有完成,那么看看结果并从中学习(我的座右铭)

我希望您学习.forEach、.map、.filter、guard let和可选下标,因为您跳过了使用集合的简单答案。哦,别忘了闭包以及它们是如何强大地捕获的

func compare(dicts: [[String]]) -> [String] {
    var result = [String: Int]()
    dicts.forEach { arg0 in
        guard let priorResult = result[arg0.key] else {
            result[arg0.key] = arg0.value
            return
        }
        result[arg0.key] = priorResult + arg0.value
    }

    return result.filter{ arg0 in return arg0.value == dicts.count }.map{ return $0.key }
}
.map、forEach和.filter
调用集合中的每个项(字典中的每个键值对)给定的闭包。
.map
返回映射内返回内容的数组。
.filter
返回闭包返回true的项目数组,从而过滤掉闭包返回false的项目。
.forEach
是for循环的替代方案

结果统计字符串的每次出现。
.filter为每个dict中出现的字符串返回true。

.map将字典的键映射到一个简单的[String]数组。

写起来很有趣,所以我把它贴在这里。如果你现在还没有完成,那么看看结果并从中学习(我的座右铭)

我希望您学习.forEach、.map、.filter、guard let和可选下标,因为您跳过了使用集合的简单答案。哦,别忘了闭包以及它们是如何强大地捕获的

func compare(dicts: [[String]]) -> [String] {
    var result = [String: Int]()
    dicts.forEach { arg0 in
        guard let priorResult = result[arg0.key] else {
            result[arg0.key] = arg0.value
            return
        }
        result[arg0.key] = priorResult + arg0.value
    }

    return result.filter{ arg0 in return arg0.value == dicts.count }.map{ return $0.key }
}
.map、forEach和.filter
调用集合中的每个项(字典中的每个键值对)给定的闭包。
.map
返回映射内返回内容的数组。
.filter
返回闭包返回true的项目数组,从而过滤掉闭包返回false的项目。
.forEach
是for循环的替代方案

结果统计字符串的每次出现。
.filter为每个dict中出现的字符串返回true。

.map将字典的键映射到一个简单的[String]数组。

太好了,请给他作业的答案。现在他学到了什么?我同意你的观点,但我认为这个网站是为了一个完整的答案。他特别要求你不要给他写代码。所以这不是他所要求的答案。@matt你肯定知道90%的网站浏览者抄袭答案而不去想为什么?任何想学习的人都不能要求自己去挖掘问题,直到找到为止himself@Alexander很抱歉告诉你我们会被打败,这是一个人想要选择学习创造的方式,只要给他任务的答案就行了。现在他学到了什么?我同意你的观点,但我认为这个网站是为了一个完整的答案。他特别要求你不要给他写代码。所以这不是他所要求的答案。@matt你肯定知道90%的网站浏览者抄袭答案而不去想为什么?任何想学习的人都不能要求自己去挖掘问题,直到找到为止himself@Alexander抱歉地告诉你,我们将被击败,这是一个人想要选择他的学习方式。尽管你没有提供任何代码,我建议检查
集合
…尽管你没有提供任何代码,我建议检查
集合
。@qwe我为您添加了解释。最好好好学习所有函数,它们使筛选和集合映射更简单。@qwe我为您添加了解释。最好把所有函数都学好,它们使过滤和集合映射变得更简单。@JustBaron你还不明白问题是什么。他特别要求一个大致的方向,而不是让某人帮他完成作业。抱歉,我误解了问题/答案。@JustBaron你不明白问题是什么。他特别要求一个大致的方向,而不是让某人帮他完成任务。