Swift Combine:无法推断复杂的闭包返回类型错误

Posted

技术标签:

【中文标题】Swift Combine:无法推断复杂的闭包返回类型错误【英文标题】:Swift Combine: Unable to infer complex closure return type error 【发布时间】:2021-10-16 03:27:04 【问题描述】:

我有以下功能:

func generateIn() -> Future<Int,Never> 
    return Future promise in
        promise(.success(Int.random(in: 1...10)))
    

我正在从这个变量中调用该函数:

let sub2 = generateIn()
    .map  value in
        print(value)
        return Int(value)
    

但是我收到了这个错误:

Unable to infer complex closure return type; add explicit type to disambiguate

你们中的任何人都知道我为什么会收到此错误或如何解决它?

非常感谢您的帮助

【问题讨论】:

您的print 可能会让编译器感到困惑。你可以试试.map( Int($0) )。如果这不起作用,您可以按照下面的示例显式定义类型。 swift 编译器很聪明,但如果你在地图中添加太多东西,它也很愚蠢。 【参考方案1】:

做它要求你做的事;告诉它闭包是什么类型。

    let sub2 = generateIn()
        .map  (value:Int) -> Int in
            print(value)
            return Int(value)
        

【讨论】:

以上是关于Swift Combine:无法推断复杂的闭包返回类型错误的主要内容,如果未能解决你的问题,请参考以下文章

无法推断复杂的闭包返回类型 SwiftUI ForEach

SwiftUI 如何修复“无法推断复杂的闭包返回类型;添加显式类型以消除歧义”

无法推断复杂的闭包返回类型;添加显式类型以消除歧义

在 VStack 中包装 WebView 时出错:无法推断复杂的闭包返回类型;添加显式类型以消除歧义

SwiftUI ForEach“无法推断复杂的闭包返回类型;添加显式类型以消除歧义”

Swift 2.0:推断闭包类型错误