Tru*_*an1 2 swift swift-extensions swift2 swift2.2
我想创建一个具有.containsAPI的所有类型的扩展.
例如,我为字符串做了这个,但是想为所有类型扩展它:
func within(values: [String]) -> Bool {
return values.contains(self)
}
Run Code Online (Sandbox Code Playgroud)
有了这个,而不是这个:
["abc", "def", "ghi"].contains("def")
为方便起见,我可以这样做:
"def".within(["abc", "def", "ghi"])
但是我想和这样的事情一起工作,例如:
[.North, .South].contains(.West)
所以我可以用枚举来做到这一点:
let value = .West
value.within([.North, .South])
Run Code Online (Sandbox Code Playgroud)
是否可以为此方案创建广泛的扩展?
该contains方法的版本是为任何SequenceType成员定义的Equatable.所以你想要的是扩展Equatable.像这样:
extension Equatable {
func within<Seq: SequenceType where Seq.Generator.Element == Self> (values: Seq) -> Bool {
return values.contains(self)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |