Swift:将类型作为参数传递

Posted

技术标签:

【中文标题】Swift:将类型作为参数传递【英文标题】:Swift: Pass Type as Parameter 【发布时间】:2015-03-22 21:17:38 【问题描述】:

是否可以在 Swift 中将类型作为函数参数传入?注意:我不想传入指定类型的对象,而是传入类型本身。例如,如果我想复制 Swift 的 as? 功能:

infix operator <-?  associativity left 
func <-? <U,T>(x:U?, t:T) -> T? 
  if let z = x as? t 
      return z
    
  

当然,t 作为类型传入,但我想传入类型本身,以便在函数体中检查该类型。

【问题讨论】:

【参考方案1】:

您可以使用T.Type,但您必须转换为T 而不是t

infix operator <-?  associativity left 
func <-? <U,T>(x:U?, t:T.Type) -> T? 
    if let z = x as? T 
        return z
    
    return nil

示例用法:

[1,2, 3] <-? NSArray.self // Prints [1, 2, 3]
[1,2, 3] <-? NSDictionary.self // Prints nil

【讨论】:

啊,是的,做到了。谢谢!

以上是关于Swift:将类型作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 作为参数传递 swift

Swift:错误将 self 作为 inout 参数传递

Swift:如何选择性地将函数作为参数传递并调用函数?

Swift:我可以将 UIView 作为我可以创建/修改的参数传递吗?

swift基本语法——数据类型

将动态类型作为参数传递