迅速映射投掷功能----两次尝试

问题描述 投票:1回答:1

一个非常小的问题。当我尝试在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语句的情况下进行这种操作?

swift error-handling higher-order-functions
1个回答
1
投票

从技术上讲,如果您避免调用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")
}
© www.soinside.com 2019 - 2024. All rights reserved.