gpt4 book ai didi

Swift:检查泛型函数的返回类型

转载 作者:搜寻专家 更新时间:2023-11-01 07:20:19 25 4
gpt4 key购买 nike

我知道如何检查命名变量的类型 - if var is T。但是找不到如何检查泛型函数的假定返回类型。

实例,处理 SwiftyJSON,丑陋的解决方案:

func getValue<T>(key: String) -> T? {
let result: T // so ugly approach...
if result is Bool {
return json[key].bool as? T
}
if result is Int {
return json[key].int as? T
}
if result is String {
return json[key].string as? T
}
fatalError("unsupported type \(result.dynamicType)")
}

寻找更优雅的方法。

最佳答案

这会起作用:

func getValue<T>(key: String) -> T? {
if T.self is Bool.Type {
return json[key].bool as? T
}
if T.self is Int.Type {
return json[key].int as? T
}
if T.self is String.Type {
return json[key].string as? T
}
fatalError("unsupported type \(T.self)")
}

但我不确定它是否比你的更优雅。


重载是值得尝试的事情:

func getValue(key: String) -> Bool? {
return json[key].bool
}
func getValue(key: String) -> Int? {
return json[key].int
}
func getValue(key: String) -> String? {
return json[key].string
}

有了这个,您可以在编译时发现错误,而不是在运行时遇到 fatal error 。

关于Swift:检查泛型函数的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com