Kotlin type mistmatch() – > SomeType与SomeType

我正在通过Kotlin Koans工作,并遇到这种类型的不匹配。 我知道还有其他的解决办法,但我想知道我做错了什么。

基本问题似乎是我通过flatMap生成一组Product

 val allOrderedProducts = customers.flatMap {it.orders.flatMap {it.products}}.toSet() 

然后我用这个作为折叠的接收器

 allOrderedProducts.fold(products) { theList, theProduct -> { ... } } 

产品的推断类型是() -> Product而不是Product

这里是我得到的类型不匹配的实际功能(这不是完成 ,而只是语法正确,足以显示类型不匹配)

有人可以解释为什么这不起作用?

 // Return the set of products that were ordered by every customer fun Shop.getSetOfProductsOrderedByEveryCustomer(): Set<Product> { val products: Set<Product> = setOf() val allOrderedProducts = customers.flatMap {it.orders.flatMap {it.products}}.toSet() allOrderedProducts.fold(products) { theList, theProduct -> customers.all { customer -> val orderedProducts = customer.orders.flatMap { it.products } orderedProducts.contains { theProduct } // type mismatch inferred type is () -> Product but Product was expected } val ret: Set<Product> = setOf() ret } val retValue: Set<Product> = setOf() return retValue } 

(免责声明我不是一个Kotlin专家)

这似乎是一个简单的语法错误; 这一行:

  orderedProducts.contains { theProduct } 

应该可能是

  orderedProducts.contains(theProduct) 

(用“普通”括号替换大括号)