Swift3 如何从枚举的swift数组中删除值
与此类似 但对于枚举 如何删除具有给定枚举的值(该枚举的本机swift enum) 不允许从这些枚举的数组中进行比较 无法将该枚举转换为Int,因为存在一些参数化的情况 示例代码(未编译):Swift3 如何从枚举的swift数组中删除值,swift3,Swift3,与此类似 但对于枚举 如何删除具有给定枚举的值(该枚举的本机swift enum) 不允许从这些枚举的数组中进行比较 无法将该枚举转换为Int,因为存在一些参数化的情况 示例代码(未编译): 嗯,这不是很重要吗。它就在错误消息中 Binary operator '!=' cannot be synthesized for enums with associated values 快速回答: arr = arr.filter { switch $0 { case .foo: re
嗯,这不是很重要吗。它就在错误消息中
Binary operator '!=' cannot be synthesized for enums with associated values
快速回答:
arr = arr.filter {
switch $0 {
case .foo: return true
default: return false
}
}
更简洁的回答:
arr = arr.filter { if case .foo = $0 { return true } else { return false } }
更易于维护的答案:
如果测试中只有几个值
,请将逻辑移到枚举中
extension test {
var isFoo: Bool {
switch self {
case .foo: return true
default: return false
}
}
var isBar: Bool {
switch self {
case .bar: return true
default: return false
}
}
}
arr = arr.filter { $0.isFoo }
嗯,这不是很重要吗。它就在错误消息中
Binary operator '!=' cannot be synthesized for enums with associated values
快速回答:
arr = arr.filter {
switch $0 {
case .foo: return true
default: return false
}
}
更简洁的回答:
arr = arr.filter { if case .foo = $0 { return true } else { return false } }
更易于维护的答案:
如果测试中只有几个值
,请将逻辑移到枚举中
extension test {
var isFoo: Bool {
switch self {
case .foo: return true
default: return false
}
}
var isBar: Bool {
switch self {
case .bar: return true
default: return false
}
}
}
arr = arr.filter { $0.isFoo }
具有关联值的枚举未隐式标记为Equatable。你必须提出要求。但是如果相关的值本身是相等的(我相信是从Swift 4.2开始的),那么这就是你所要做的 更改:
enum Test
致:
(注意:枚举是类型,应始终大写)带有关联值的枚举未隐式标记为Equatable。你必须提出要求。但是如果相关的值本身是相等的(我相信是从Swift 4.2开始的),那么这就是你所要做的 更改:
enum Test
致:
(注意:枚举是类型,应该始终大写)向我们展示代码,可能是关于您尝试了什么以及如何…?您所说的“不允许比较的本机swift枚举”是什么意思?您能举个例子吗?添加的示例代码向我们展示代码,可能是关于您尝试了什么以及如何…?您所说的是什么意思“不允许比较的本机swift枚举?”您能举个例子吗?添加了示例代码