通常情况下,当闭包在某个函数中使用时,它会尝试从函数的返回值推断出其应该返回的类型。然而,如果函数返回的是一个可选类型或是其他因素,在此情景下就可能会出现上述问题。
解决方法就是明确指定闭包的返回类型,如下:
func processPerson(completion: (Person?) -> ()) {
// some code
completion(person)
}
// 指定返回类型为Person,而非可选类型或其他类型
processPerson { (person: Person?) -> Person in
guard let person = person else {
// 处理person为nil的情况
return Person(name: "", age: 0)
}
return person
}
在闭包中使用明确的返回类型可以帮助编译器更准确地推断类型,从而避免出现问题。