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:将类型作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章