【发布时间】:2020-04-08 03:18:03
【问题描述】:
一个很小的问题。当我尝试在 Swift 中映射一个抛出函数时,编译器让我使用 try 关键字两次。举个玩具例子:
public func combineFiles(files: [String]) throws -> String {
let strings = try files.map { try String(contentsOfFile: $0) }
return strings.joined(separator: "\n\n")
}
为了编译它,第二行中的两个 try 关键字似乎都是必需的。但这对我来说感觉非常错误——有没有办法在没有第二次尝试语句的情况下进行这种操作?
【问题讨论】:
-
contentsOfFile可以扔。因此需要一试。你没有赶上尝试。因此它渗透了。所以现在map可以扔了。因此需要一试。否则如果一个contentsOfFile失败会怎样? -
如果你看一下 map 的声明,你会发现它是这样写的:developer.apple.com/documentation/swift/array/3017522-map 它所接受的函数可以连贯地抛出,因为 map 重新抛出。
标签: swift error-handling higher-order-functions