2015-11-08 98 views
2

我想在swift 2.0中的任何协议上添加一个方法,但是我得到这个错误,非名义类型'any'(又名协议<>)无法扩展。任何协议的Swift 2.0协议扩展

任何想法为什么我无法将协议扩展添加到任何类型?什么可能是这种限制可能的解决方法?我的意图是添加一个名为isPrimitiveType的getter,如果对象是基元或实际对象,则返回true。

+0

什么是您的实际用例的例子,你为什么要这么做? –

+0

这是我计划做的事情, var isPrimitive:Bool {0} {0}返回self是String ||我是Bool || self是Int ||我是Float || self is Double } –

+0

你可以举一个例子,你可以在代码中使用它吗? –

回答

3

从Swift 2.1开始,您无法扩展像AnyAnyObject这样的协议。将来可能会做到这一点。

至于解决方法,你可以使用一个通用的全球自由功能:

func isPrimitive<T>(value: T) -> Bool { 
    return value is String || value is Bool || value is Int || value is Float || value is Double 
}