一个非常小的问题。当我尝试在Swift中映射一个throwing函数时,编译器使我两次使用try关键字。对于玩具示例:
public func combineFiles(files: [String]) throws -> String {
let strings = try files.map { try String(contentsOfFile: $0) }
return strings.joined(separator: "\n\n")
}
第二行中的两个try关键字似乎都必须进行编译。但这对我来说感觉很不对-是否可以在没有第二次try语句的情况下进行这种操作?
从技术上讲,如果您避免调用try
,则可以只有一个map
:
func combineFiles(files: [String]) throws -> String {
var results: [String] = []
for file in files {
results.append(try String(contentsOfFile: file))
}
return results.joined(separator: "\n\n")
}
但是我认为这是错误的方向。我只是接受两个try
模式,它们需要重新抛出map
之类的功能。
不过我会失去strings
:
func combineFiles(files: [String]) throws -> String {
try files.map { try String(contentsOfFile: $0) }
.joined(separator: "\n\n")
}