【问题标题】:Swift: Pass Type as ParameterSwift:将类型作为参数传递
【发布时间】: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 作为类型传入,但我想传入类型本身,以便在函数体中检查该类型。

【问题讨论】:

    标签: swift types functional-programming


    【解决方案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
    

    【讨论】:

    • 啊,是的,做到了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多