gpt4 book ai didi

swift - 在 Swift 中使用@discardableResult 作为闭包

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:25 24 4
gpt4 key购买 nike

Swift 3 有 introduced函数的 @discardableResult 注释禁用未使用函数返回值的警告。

我正在寻找一种方法来消除此关闭警告。

目前,我的代码如下所示:

func f(x: Int) -> Int -> Int {
func g(_ y: Int) -> Int {
doSomething(with: x, and: y)
return x*y
}
return g
}

在不同的地方,我调用了一次f来获得一个闭包g,然后我重复调用它:

let g = f(5)
g(3)
g(7)
g(11)

在大多数地方,我只对 doSomething 的嵌套调用的副作用感兴趣,而不对闭包 g 的返回值感兴趣。使用 Swift 3,我的项目中现在有许多关于未使用结果的警告。除了在所有地方将对 g 的调用更改为 _ = g(...) 之外,还有没有办法抑制警告?我找不到可以放置 @discardableResult 注释的地方。

最佳答案

我认为没有办法将该属性应用于闭包。您可以在另一个丢弃结果的闭包中捕获您的闭包:

func discardingResult<T, U>(_ f: @escaping (T) -> U) -> (T) -> Void {
return { x in _ = f(x) }
}

let g = f(5)
g(3) // warns
let h = discardingResult(g)
h(4) // doesn't warn

关于swift - 在 Swift 中使用@discardableResult 作为闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39712543/

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