作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在我的一个类中有一个泛型方法,我想要一个符合 UIViewController
和 UIPickerViewDelegate
的泛型类型。我怎样才能做到这一点?我想到了这样做:
func foo<T: UIViewController, UIPickerViewDelegate> (#viewController: T) {}
但是这段代码不能“识别”UIPickerViewDelegate
。我还考虑过使用管道 |
而不是逗号,但这更糟糕,编译器不接受。是否可以这样做,或者我必须为类和协议(protocol)做 2 个参数?或者有更好的解决方法吗?
感谢您的帮助,圣诞快乐:]
最佳答案
您的代码:
func foo<T: UIViewController, UIPickerViewDelegate> (#viewController: T) {}
声明2泛型参数:
T
即 UIViewController
。并用作viewController
参数类型。UIPickerViewDelegate
是 Any
。而且它没有被使用。相反,您应该使用 "Where Clause" ,比如:
func foo<T: UIViewController where T:UIPickerViewDelegate> (#viewController: T) {}
关于generics - 符合两种协议(protocol)的 Swift 泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27633872/
我是一名优秀的程序员,十分优秀!