在
Swift3中,你能做到这一点……
func example<T>()->(T) where T can only be String or Int
或者,你只需要两个扩展名吗?
输入在概念上是一个“数字”,但它可以是法语字符串,也可以是整数.因此输入可以是字符串“cent”或Int 100.结果将是平方根,因此字符串“dix”或Int 10.
这不是泛型的工作.使用两种类型的静态集合没有任何通用性.
这是使用枚举的完美情况:
enum SomeEnum { //TODO: name me case string(String) case int(Int) } func foo(input: SomeEnum) -> SomeEnum { switch input { case .string(let s): print("This is a String: \(s)") return(.string("abc")) case .int(let i): print("This is an Int: \(i)") return(.int(123)) } } print(foo(input: SomeEnum.string("qwerty"))) print(foo(input: SomeEnum.int(5)))