You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift如何实现传入类型参数,判断变量类型并执行对应逻辑的函数?

可以实现,修正方案如下

你的需求完全可以实现,原代码的问题在于if a is b的写法不符合Swift语法——is关键字后需要跟具体类型,而b是T.Type类型的实例(即类型对象),不能直接放在is后面。

修正代码(支持子类匹配)

如果需要判断a是B类型或其子类类型,用泛型参数T直接判断即可:

func magic<T>(a: Any, b: T.Type) {
    if a is T {
        doSomething()
    } else {
        doSomethingElse()
    }
}

可选:精确匹配类型(不包含子类)

如果要求a的类型必须和传入的B完全一致(不匹配子类),可以用类型对象直接比较:

func magic<T>(a: Any, b: T.Type) {
    if type(of: a) == b {
        doSomething()
    } else {
        doSomethingElse()
    }
}

内容的提问来源于stack exchange,提问作者David Schmoecker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:04:56