我想使用SwiftHamcrest斯威夫特没有找到正确的类型
我有一个函数
func equalToArray<T, S>(_ vector:Array<S>) -> Matcher<T> {
let v: Matcher<T> = Hamcrest.hasCount(16)
return v
}
这给出了一个错误
Error:(16, 31) 'hasCount' produces 'Matcher<T>', not the expected contextual result type 'Matcher<T>'
SwiftHamcrest有两个hasCount功能
public func hasCount<T: Collection>(_ matcher: Matcher<T.IndexDistance>) -> Matcher<T>
public func hasCount<T: Collection>(_ expectedCount: T.IndexDistance) -> Matcher<T>
为什么我的代码抱怨不是它返回所需的相同类型。
作为一个说明,可能是一个不同的问题,我不得不添加Hamcrest。在hasCount方法调用之前,否则它试图匹配到第一个函数
我缺少什么类型?
看起来你想返回一个'Matcher <[S]>'而不是'Matcher'(然后删除通用占位符'T')。虽然我不确定'vector'参数的用途。 –
Hamish
@Hamish - 这是一个减少案例,我想要其他匹配器 - 所以是在这个例子中不需要参数更全面的例子是func equalToArray(_ vector:Array
) - > Matcher { \t设v:匹配器 = Hamcrest.hasCount(vector.count) \t回报v } –
Mark