Swift sum()的快速模糊用法
我有以下分机:Swift sum()的快速模糊用法,swift,Swift,我有以下分机: protocol Addable { init() func + (lhs: Self, rhs: Self) -> Self } extension Int: Addable {} extension Double: Addable {} extension SequenceType where Generator.Element: Addable { func sum() -> Generator.Element {
protocol Addable {
init()
func + (lhs: Self, rhs: Self) -> Self
}
extension Int: Addable {}
extension Double: Addable {}
extension SequenceType where Generator.Element: Addable {
func sum() -> Generator.Element {
return reduce( Generator.Element() ) { $0 + $1 }
}
}
我尝试在单元测试中使用它:
func testThatArrayOfDoublesCanCalculateTheSumOfAllElements() {
let numbers = [1.0, 2.0, 3.0]
let myExpectedValue = 1.0 + 2.0 + 3.0
let myActualValue = numbers.sum()
XCTAssertEqual(myExpectedValue, myActualValue)
}
在Xcode 7.3中,编译器对“sum()”的用法不明确。为什么?
侧板上写着:
问题是我在框架目标和测试目标中构建扩展文件。什么是
数字
?假设数字
是Int
或Double
的数组,我无法重现此编译器错误。更新了我的测试用例。sum()的使用在声明扩展的同一模块中正常,但在测试模块中出错。如果我在扩展中添加public关键字,那么在声明扩展的模块中也是一个错误。您的最后一句话表明您的代码中的某个地方对sum()的定义存在冲突。检查编译器输出(在报表导航器中),它应该显示其不明确的原因。