gpt4 book ai didi

swift - 检查 Array as Any 是否存在 Swift 中的元素

转载 作者:行者123 更新时间:2023-11-28 10:50:51 27 4
gpt4 key购买 nike

将数组作为任何对象:

var a : [Any] = []
let x : String = "This is X"
let y : Int = 9
let z : [Any] = ["1", "no. 2"]

a.append(x)
a.append(y)
a.append(z)

let ele1 = 9
let ele2 = "This is test string"

如果 a 是 String/Int 数组就很简单,但这是 Any 数组!如何判断a中是否存在ele1、ele2?

最佳答案

由于 Any 不符合 Equatable[Any] 没有 contains(_:) 方法。您也不能使用 == 来比较 Any

但是,[Any] 确实有一个 contains(where:) 方法接受谓词。您可以传入一个 (Any) -> Bool,如果数组中有任何内容使闭包返回 true,则 contains 返回 true。

我们可以使用 contains(where:) 来做你想做的。例如,如果你想检查 ele2:

a.contains(where: { ($0 as? String) == ele2 })

我所做的是先将元素转换为字符串,然后使用==

您还可以创建执行此操作的扩展程序:

extension Array where Element == Any {
func contains<T: Equatable>(_ element: T) -> Bool {
return contains(where: { ($0 as? T) == element })
}
}

关于swift - 检查 Array as Any 是否存在 Swift 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46233221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com