2016-01-03 107 views
0

我有一个简单的点产品功能:暧昧参考

func dotProduct(vectorA: [Float], vectorB: [Float]) -> [Float] { 
    return map(zip(vectorA, vectorB), *) 
} 

但是,它提出了以下错误

Ambiguous reference to member '*' 

任何想法?似乎vectorA和vectorB的类型都明确定义为[Float]。

回答

2

它的工作原理,如果调用map压缩的名单上:

func dotProduct(vectorA: [Float], vectorB: [Float]) -> [Float] { 
    return zip(vectorA, vectorB).map(*) 
} 

似乎斯威夫特的推论是有点欠缺。

+1

啊你打我吧,我会删除我的:) – dfri

+1

这不是一个缺乏斯威夫特的推论缺乏的问题。只是'map'在Swift中不再是一个免费的函数。它现在定义在'SequenceType'协议的扩展中,所以你必须在* something上调用'map'方法 - 就像zip返回的序列一样。 –

+0

我认为如果'map()'是一个有效的全局函数,那么它将具有将其转换为传递给它的'SequenceType'上的调用所需的所有信息。 – javanut13