如果直接Array添加拓展的方法一般的写法就是下面这样.
extension Array {
...
}
当Array这个数组包含的自己定义的类, 而这个方法又不能给全部的Array调用, 那么该怎么写呢?
比如我声明了一个这样的数组var channels = [ChannelVos]
, 我只想给包含了ChannelVos
的这个数组添加拓展方法, 那么该怎么办呢 ?
这里就要用到where
去做判断, 代码如下:
extension _ArrayType where Generator.Element == ChannelVos {
func channelsForGroupNames(groupNames:[String]) -> [String:ChannelVos]? {
...
return nil
}
}
var aa = [String]()
var bb = [ChannelVos]()
aa.channelsForGroupNames(["aaa"]) //找不到这个拓展方法
bb.channelsForGroupNames(["aaa"]) //正常使用
网友评论