2
目前我的雨燕代码应该是显而易见下面的代码片段是功能:Can Swift Generics可以帮助一个函数根据类来处理不同的参数吗?
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',怎么样? – user2864740 2014-10-06 02:19:23
我从外部类调用loadPage,但它只是一个实验,能够传递任何对象并相应地从单个公共方法处理它,而不会暴露私有函数。 – coneybeare 2014-10-06 02:24:14
如果创建*多个*类型(读取:类),每个处理特定的*类型*的“页面”,则可以使用泛型。然后,仍然有基于实际的“页面”类型选择正确的实现(并输入表达式)的过程。我可能会公开不同的方法和/或要求调用者在这种情况下预先做更多的工作。其他模式(例如,不同的服务/工厂/查找)在更大的“企业”代码中变得相关,但也使可能是简单的代码复杂化。 – user2864740 2014-10-06 02:25:34