从数组中删除闭包但不使用它会导致编译器错误“表达式解析为未使用的函数”。除了将函数分配给一次性变量之外,是否有好的方法可以避免这种情况?
typealias StringFunction = () -> String
var list = [StringFunction]()
list.append({ "Hello World!" })
let hi = list[0]() // "Hello World!"
list.removeAtIndex(0) // Expression resolves to an unused function
let _ = list.removeAtIndex(0) // Works
将表达式的结果分配给一次性变量is正确的方法是这样做。事实上,这是 Swift 中处理未使用结果的惯用方法。
因此(如另一个答案的评论中所述)正确的解决方案是:
typealias StringFunction = () -> String
var list = [StringFunction]()
list.append({ "Hello World!" })
let hi = list[0]()
_ = list.remove(at: 0) // Note there's no need for `let`
这样做不仅可以使您的代码更清楚地了解您的意图(即,它表明您绝对不需要该方法的结果),而且还可以帮助编译器执行各种有用的优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)