加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组 – 如何判断变量是否是数组

发布时间:2020-12-14 05:41:25 所属栏目:百科 来源:网络整理
导读:我有一个接受Any的 Swift函数,我希望它可以接受一个字符串数组,一个Ints数组,一个混合数组或数组数组等.它也可以接受一个String或一个Int,等等,不在数组中. 所以我有这个: private func parse(parameter: Any) { if parameter is Int { // Int } else if (p
我有一个接受Any的 Swift函数,我希望它可以接受一个字符串数组,一个Ints数组,一个混合数组或数组数组等.它也可以接受一个String或一个Int,等等,不在数组中.

所以我有这个:

private func parse(parameter: Any) {
        if parameter is Int {
            // Int
        } else if (parameter is Float) || (parameter is Double) {
            // Double
        } else if parameter is String {
            // String
        } else if parameter is Bool {
            // Bool
        } else if let array = parameter as? [Any] {
            // Should catch all Arrays
        } else {
            assert(false,"Unsupported type") // [String] ends up here
        }
    }

但是如果我调用parse([“Strings”]),则提出该断言.如何捕获所有类型的数组?

编辑 – 有什么我想要完成的一些混乱.我基本上需要返回一个基于类型的String,所以Int – > “”和String – > “”,所以一个数组将进行递归调用返回“…”

这个帖子被标记为重复,但另一个问题是关于Javascript,而不是Swift.

我终于找到了这样做,那就是使用NSArray进行投射.
private func parse(x: Any) {
    if let o = x as? [Any] {
        println("[Any]")
    }
    if let o = x as? [AnyObject] {
        println("[AnyObject]")
    }
    if let o = x as? NSArray {
        println("NSArray")
    }
}

let a: [Any] = ["bar"]
let b: [AnyObject] = ["bar"]
let c = ["foo",3.14]

parse(a) // ==> [Any]
parse(b) // ==> [AnyObject],and also NSArray
parse(c) // ==> NSArray

它看起来是一个包含NSArray内部表示的Any的数组.(但是应该能够将c转换为[Any] …?我怀疑这是一个错误.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读