首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确定在Swift中通用是否是可选的?

如何确定在Swift中通用是否是可选的?
EN

Stack Overflow用户
提问于 2014-08-01 00:49:28
回答 1查看 8.7K关注 0票数 24

我想用一个函数来扩展Array,该函数将返回Array中所有非nil项的计数。理想情况下,这将适用于任何可选或非可选类型的数组。我尝试了各种不能编译的东西,使Xcode崩溃,或者两者兼而有之。我会假设它看起来像这样:

extension Array {
    func realCount() -> Int {
        var cnt = 0
        for value in self {
            if value != nil {
                cnt++
            }
        }

        return cnt
    }
}

在这里,斯威夫特抱怨说,T不能转换为UInt8。或者有时是MirrorDisposition或其他随机类。

那么假设这是可能的,那么诀窍是什么呢?

编辑:从Xcode6beta5开始编译,但没有给出预期的结果。if value != nil每次都计算为true。

EN

回答 1

Stack Overflow用户

发布于 2021-10-15 23:07:38

检查泛型类型是否为可选

使用函数_isOptional(T.Type)

    _isOptional(Int.self) // -> false
    _isOptional(Int?.self) // -> true

适用于泛型或具体类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25064644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档