具有可初始化的Swift函数返回类型
我希望函数返回一个类型,该类型可以用特定的方式进行初始化,例如使用特定的参数。在许多其他方面都可以得到相同的结果,但我特别寻找这种语法糖。 我想知道是否可以这样做:具有可初始化的Swift函数返回类型,swift,syntactic-sugar,Swift,Syntactic Sugar,我希望函数返回一个类型,该类型可以用特定的方式进行初始化,例如使用特定的参数。在许多其他方面都可以得到相同的结果,但我特别寻找这种语法糖。 我想知道是否可以这样做: protocol P { init() } extension Int: P { public init() { self.init() } } // same extension for String and Double func Object<T: P>(forType
protocol P {
init()
}
extension Int: P {
public init() {
self.init()
}
}
// same extension for String and Double
func Object<T: P>(forType type: String) -> T.Type? {
switch type {
case "string":
return String.self as? T.Type
case "int":
return Int.self as? T.Type
case "double":
return Double.self as? T.Type
default:
return nil
}
}
let typedValue = Object(forType: "int")()
您可以这样做:
protocol Initializable {
init()
}
extension Int: Initializable { }
extension String: Initializable { }
func object(type: String) -> Initializable.Type? {
switch type {
case "int":
return Int.self
case "string":
return String.self
default:
break
}
return nil
}
let a = object(type: "string")!.init()
print(a) // "\n"