针对通用类型的Swift检查类型

针对通用类型的Swift检查类型,第1张

概述我有一个带有1参数的通用函数,并且想要检查通用类型的传递参数的类型.这样的事情 func generic<T>(parameter: AnyObject) -> Bool { if parameter is T { return true } else { return false }} 但是我不知道该怎么称呼 generic<String 我有一个带有1参数的通用函数,并且想要检查通用类型的传递参数的类型.这样的事情
func generic<T>(parameter: AnyObject) -> Bool {    if parameter is T {        return true    } else {        return false    }}

但是我不知道该怎么称呼

generic<String>("Hello")

给我一个编译器错误:“不能显式地专门化通用函数
通用(“你好”)

你不能告诉一个函数它的通用占位符的类型(与通用结构体不同).它必须从上下文推断它们.其论据.

执行所需的一种方法是添加与类型T相关的另一个参数.而不是传入虚拟值,您可以使用所需类型的元类型:

func generic<T>(parameter: AnyObject,type: T.Type) -> Bool {    if parameter is T {        return true    } else {        return false    }}let o: AnyObject = "hello"generic(o,String.self)    // truegeneric(o,Nsstring.self)  // also truegeneric(o,Int.self)       // false

但是,我会问你,你认为你在这里实现了什么?你实际上只是做一个功能:

o is String     // trueo is Nsstring   // trueo is Int        // false

泛型点是一般地对参数进行 *** 作,但是您并没有给出函数任何特定类型的参数来实际执行任何工作(因此无法推断出一个).

总结

以上是内存溢出为你收集整理的针对通用类型的Swift检查类型全部内容,希望文章能够帮你解决针对通用类型的Swift检查类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1028652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存