【发布时间】:2020-01-07 18:05:38
【问题描述】:
我试图从控制台上的 API 打印我的输出以进行调试。 我有这个方法,我计划在这两种情况下都调用,错误和成功。
private static func printDetail<T>(route: APIRouter, resultSuccess: T? = nil, resultError: Any? = nil) where T: Codable {
let isSuccess = resultSuccess != nil
isSuccess ? print("✅✅✅✅✅✅") : print("❌❌❌❌❌❌❌❌")
// FOR Debuging Purposes
print("----------------")
print("REQUEST")
print("----------------")
print("PATH : --> " + route.fullPath)
print("parameters : --> ")
print((route.parameters ?? "none"))
print("methods : --> ")
print((route.method.rawValue))
print("Headears : --> ")
print((route.allHeaders))
print("----------------")
print("Response")
print("----------------")
if isSuccess {
let json = try! getJson(model: resultSuccess!)
print(json)
} else {
print(resultError!)
}
print("----------------")
isSuccess ? print("✅✅✅✅✅✅") : print("❌❌❌❌❌❌❌❌")
}
所以我称之为成功案例,它按我的预期工作。
// For Simplicity assume value is any Generic
// let value: (T)
self.printDetail(route: route, resultSuccess: value)
但是对于错误情况,我不能只传递通用的 nil。
self.printDetail(route: route, resultError: jsonResult)
我收到此错误
无法推断通用参数“T”
这很容易理解,所以我的问题是有什么办法可以通过使用 Generic 来使用相同的方法?在这种情况下,Generic 可以是可选的和 nil 吗?或者我唯一的选择是为错误和成功案例制作两种不同的方法。
【问题讨论】:
-
在这种情况下你真的需要 Generic 吗?改用
Any?怎么样?