在Swift v4.2中,他们引入了扩展名Bool.toggle()
,从早些时候开始我就有了这个扩展名,现在我用Xcode10编译时,它说Ambiguous use of 'toggle()'
。如果Swift版本为4.2或更高版本,我试图使其忽略自己的扩展名,因此我使用了构建配置swift(>=)
,该配置应检查当前的Swift版本是否等于或高于指定的版本。
public extension Bool {
#if swift(>=4.2)
// DO NOTHING
#else
mutating func toggle() {
self = !self
}
#endif
}
在Xcode10和Xcode9上,它应该只看到注释“不要”,它应该看到扩展方法。但是发生的是,当在Xcode10上它仍然看到该方法并且我仍然收到错误“歧义使用”时,在Xcode9上它也看到了该方法。我也将构建设置Swift Language Version
更改为Swift 4.2
,但编译器仍然可以看到该方法。