gpt4 book ai didi

optimization - Swift 泛型能否帮助函数根据类以不同方式处理参数?

转载 作者:可可西里 更新时间:2023-11-01 02:27:43 25 4
gpt4 key购买 nike

我展示了以下 Swift 代码片段,它应该是函数:

    func loadPage(page: AnyObject) {
if page is String {
loadRequest(page as String)
} else if page is NSURL {
loadRequest(page as NSURL)
} else if page is NSURLRequest {
loadRequest(page as NSURLRequest)
} else {
assertionFailure("Unsupported page type")
}
}

private func loadRequest(string: String) {
loadRequest(NSURL(string: string))
}

private func loadRequest(url: NSURL) {
loadRequest(NSURLRequest(URL: url))
}

private func loadRequest(request: NSURLRequest) {
webView.loadRequest(request)
}

我正在努力了解泛型的强大功能,并试图找出一种可以使用泛型类型来缩短此代码段的方法,但我不确定这是否适用于这里的单个模式AnyObject 接受通过 is/as 比较运行该对象的函数。我错了吗?

最佳答案

这不是泛型的好用例,因为您希望在 loadPage() 调用中允许的三种类型实际上无法以相同的方式处理。当一组类型都共享一个特定的属性或行为(如 ComparableSequenceType)时,将使用泛型方法,但在这里你要专门分支,以便你可以处理每种类型的差异。

最好有多个重载的 loadPage() 实现来匹配您的私有(private) loadRequest() 方法——这样您就可以进行类型检查和将清楚支持哪些类型作为“页面类型”。

关于optimization - Swift 泛型能否帮助函数根据类以不同方式处理参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26209060/

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