gpt4 book ai didi

swift - 用试试?运算符使代码更简洁

转载 作者:可可西里 更新时间:2023-11-01 00:58:28 27 4
gpt4 key购买 nike

我在 Swift 2 中有这段代码可以将文件移动到新的目的地,必要时覆盖:

let origin = "...", destination = "..."
do {
try NSFileManager.defaultManager().removeItemAtPath(destination) // remove existing file
} catch {}
do {
try NSFileManager.defaultManager().moveItemAtPath(origin, toPath: destination)
} catch {}

为了使代码更简洁,并且由于我不关心抛出的错误,我想到了使用 try? 运算符,如下所示:

let origin = "...", destination = "..."
try? NSFileManager.defaultManager().removeItemAtPath(destination)
try? NSFileManager.defaultManager().moveItemAtPath(origin, toPath: destination)

这会创建一个编译器警告操作的结果未被使用,所以我必须添加一个未使用的 let,它看起来很糟糕:

...
let _ = try? NSFileManager.defaultManager().moveItemAtPath(origin, toPath: destination)

为了简洁起见把警告放在那儿不好吗?

最佳答案

在 Swift 3 中,忽略没有额外赋值的结果是合法的。这在 Xcode 8 GM 中编译得很好,没有警告:

try? FileManager.default.removeItem(atPath: destination)

(早些时候,顺便说一下,我在 bugs.swift.org 上询问过这个问题,并被直接告知这个 _ = try?语法被认为是正确的,并且要向编译器——以及你自己——承认你是故意忽略返回值而付出的代价很小。因此,当您留在 Swift 2 世界中时,您所做的一切都很好!)

关于swift - 用试试?运算符使代码更简洁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com