2
A
回答
2
种。由于Optional
是一种协议,因此您可以创建扩展并对其进行约束。但是,约束不能在一个类型上,但需要在一个协议上。
这工作:
extension Optional where Wrapped: SignedIntegerType {
func test() -> Int {
return 0
}
}
,然后你可以使用它:
let a:Int? = nil
a.test()
但是,如果你尝试做:
extension Optional where Wrapped: Int {
func test() -> Int {
return 0
}
}
,你会得到一个错误:
type 'Wrapped' constrained to non-protocol type 'Int'
+0
请注意,调用该方法时,必须调用它,因为它是非可选的。 –
+1
是的,这使它看起来很奇怪,恕我直言。 – pgb
相关问题
- 1. Swift的泛型类型推断扩展
- 2. Class实例扩展了泛型超类
- 3. 从泛型类型的Swift实例化
- 4. 扩展泛型类
- 5. 如何声明扩展泛型的类扩展泛型
- 6. 扩展最终类的泛型类型
- 7. 实现泛型扩展
- 8. 将扩展方法应用于泛型类型泛型类型
- 9. 泛型扩展
- 10. 实例化Kotlin中的泛型类型
- 11. 具有特定类型的泛型列表的扩展?
- 12. 使用泛型扩展类型
- 13. 在Swift中,如何在协议扩展中使用泛型枚举类型?
- 14. 如何创建一个泛型类的实例,该泛型类具有在其自己的类中扩展静态类的类型参数?
- 15. Swift:查找给定类型的实例的泛型函数
- 16. 在Swift中扩展序列类型
- 17. 斯卡拉实例化一个具体的类从泛型类型
- 18. 如何在类中使用扩展泛型类型?
- 19. 扩展泛型而不指定类型参数的非泛型类型
- 20. 将非泛型类扩展为泛型类
- 21. 泛型类型的返回实例
- 22. 持有泛型类型的实例 - C++
- 23. 泛型类型的实例化?
- 24. 实例化泛型类
- 25. 实体框架的泛型类型
- 26. 扩展类科特林的泛型
- 27. Dart:扩展带限制的泛型类
- 28. C#泛型类型的泛型对象实例化
- 29. 在C#中使用泛型创建类似类型的实例
- 30. 非泛型类中的泛型实例变量
只需扩展Int本身 –