任何协议的Swift 2.0协议扩展
问题描述:
我想在swift 2.0中的任何协议上添加一个方法,但是我得到这个错误,非名义类型'any'(又名协议<>)无法扩展。任何协议的Swift 2.0协议扩展
任何想法为什么我无法将协议扩展添加到任何类型?什么可能是这种限制可能的解决方法?我的意图是添加一个名为isPrimitiveType的getter,如果对象是基元或实际对象,则返回true。
答
从Swift 2.1开始,您无法扩展像Any
和AnyObject
这样的协议。将来可能会做到这一点。
至于解决方法,你可以使用一个通用的全球*功能:
func isPrimitive<T>(value: T) -> Bool {
return value is String || value is Bool || value is Int || value is Float || value is Double
}
什么是您的实际用例的例子,你为什么要这么做? –
这是我计划做的事情, var isPrimitive:Bool {0} {0}返回self是String ||我是Bool || self是Int ||我是Float || self is Double } –
你可以举一个例子,你可以在代码中使用它吗? –