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)
(用“普通”括号替换大括号)