例如,我们有以下代码
func testFunc<T>(_ value: T) {
// do something
}
// This overloaded function is provided on a newer version of SDK, we need to check the SDK version.
func testFunc<T>(_ value: T?) {
// do something if we have an optional value
}
如果我有一个可选值,如何指定要调用 first 函数而不是 second 函数?这样做的理由是 second 函数可能仅在较新的SDK上可用,因此我需要回退。
答案 0 :(得分:0)
Swift尝试选择最具体的功能。
因此,要呼叫testFunc<T>(_ value: T)
,您必须在其中传递一个非可选的T
。如果在此传递,则将调用可选的或强制展开的T
第二个函数testFunc<T>(_ value: T?)
。
您不能明确地告诉编译器要使用哪个重载函数,只能修改参数,使其与要调用的重载函数完全匹配。
此代码段保证testFunc<T>(_ value: T)
被称为
let optional: Int? = 5
if let optional = optional {
testFunc(optional)
}
答案 1 :(得分:-1)
if let value = value {
testFunc(value)
}