swift - 为什么 Swift Set 函数 为什么firstIndex(of : ) Apply?

标签 swift set

我理解 Set Collection 是键值对,并且键不重复。

在下面的例子中,我认为水果是关键。

但是 .firstIndex(of: ) 存在为什么?

那么可以存在第二个索引吗?

我是不是对这个系列有什么误解?

var favoriteFruits: Set = ["Banana", "Apple", "Orange", "Orange"]

favoriteFruits.insert("WaterMelon")
print(favoriteFruits)
favoriteFruits.remove("Banana")
print(favoriteFruits)

if favoriteFruits.contains("Tomato") {
    print("Tomato is my favorite Fruits")
} else {
    print("Tomato is not my favorite Fruits")
}

print(favoriteFruits.firstIndex(of: "Orange"))

如果您发表评论,将会有很大帮助。

最佳答案

如果您检查firstIndexOf method's explanition你会看到一个定义:

Available when Element conforms to Equatable.

集合符合Equatable。您还可以在检查两个集合的相等性时对此进行测试。下面的代码不会给出任何错误。

if set1 == set2{
  //....
}

You ask .firstIndex(of: ) is exist why?

所以Set的集合类型使用firstIndexOf方法没有任何障碍

如果你问为什么set是equatable.Set使用哈希表来检查里面的元素。因此Set 必须是可哈希的。符合Hashable 的对象也必须是Equatable

关于swift - 为什么 Swift Set 函数 为什么firstIndex(of : ) Apply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74716675/

相关文章:

swift - 为什么我的 minimax 算法不撤消每一步?

Python- 在对象列表上使用集合 <class 'xyz.models.abc' >

c++ - 根据特定数据过滤 std::set

Swift 4 闭包 : failing to access another local property from within the closure

ios - 选择要在 didEndDisplaying 中使用的单元格类

c - 如何阻止 Cocoapods 导入保护伞中的私有(private) header

java - 如何使用二进制搜索从已排序的 TreeSet 中检索元素?

swift - 需要在 Modal Segues 之后释放内存,但我需要两个 Segues 将数据从 A 传递到 B 以及从 B 传递到 A

linq - 查找所有元素共有的值

c++ - std::set 没有前后成员函数是否有设计原因?