gpt4 book ai didi

swift - 调用 [myFunction] 的结果未被使用

转载 作者:IT王子 更新时间:2023-10-29 05:18:54 24 4
gpt4 key购买 nike

在 Obj-C 中,常见的做法是使用便利函数来执行常见操作,例如为 View 配置自动布局:

func makeConstraint(withAnotherView : UIView) -> NSLayoutConstraint
{
// Make some constraint
// ...

// Return the created constraint
return NSLayoutConstraint()
}

如果你只是需要设置约束而忘记它,你可以调用:

[view1 makeConstraint: view2]

如果你想稍后存储约束以便你可以删除/修改它,你可以这样做:

NSLayoutConstraint * c;
c = [view1 makeConstraint: view2]

我想快速执行此操作,但如果我调用上述函数但未捕获返回的约束,我会收到警告:

Result of call to 'makeConstraint(withAnotherView:)' is unused

非常烦人。有什么方法可以让 Swift 知道我并不总是想捕获返回值吗?

注意:我知道这件事。它很丑,不是我要找的:

_ = view1.makeConstraint(withAnotherView: view2)

最佳答案

这是在 Swift 3 中引入的行为。现在不必使用 @warn_unused_result 显式注释函数来告诉编译器结果应该由调用者使用,这是现在默认行为。

您可以在函数上使用 @discardableResult 属性,以通知编译器返回值不必由调用者“使用”。

@discardableResult
func makeConstraint(withAnotherView : UIView) -> NSLayoutConstraint {

... // do things that have side effects

return NSLayoutConstraint()
}

view1.makeConstraint(view2) // No warning

let constraint = view1.makeConstraint(view2) // Works as expected

您可以在 the evolution proposal 上阅读有关此更改的更多详细信息.

关于swift - 调用 [myFunction] 的结果未被使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37939573/

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