【发布时间】:2016-06-28 05:36:47
【问题描述】:
我有以下代码尝试合并数组的冗余元素:
var items : [String] = ["hello", "world", "!", "hello"]
var mutableSet = Set<String>()
items.reduce(mutableSet, combine: { (set: Set<String>, element: String) in
return set.insert(element)
})
set.insert(element) 给了我错误Cannot use mutating member on immutable value: 'set' is a 'let' constant。出了什么问题,我该如何解决?
【问题讨论】:
-
let uniqueItems = Set(items)会更简单... -
很好的解决方案,马丁。我的代码实际上不使用文字而是使用对象,因此 Set(items) 不起作用。那是因为我需要为对象定义相等运算符吗?编辑:刚刚看到它们需要是可散列的
-
@coolcade,是的,您的对象需要实现
Hashable协议(这反过来意味着您的对象是Equatable)。 -
当我打算比较对象存储的枚举时,我意识到我正在比较对象,因此您的解决方案适用于我正在尝试做的事情。谢谢,马丁。
标签: swift functional-programming immutability