美文网首页
iOS Swift Vapor 关于 解析 Swift 中的 @

iOS Swift Vapor 关于 解析 Swift 中的 @

作者: 冰雨9527 | 来源:发表于2021-09-30 15:21 被阅读0次

    当写 Swift 方法时,你可能经常会遇到这样的场景:

    有时候想要忽略方法的返回值,但有时候又需要处理返回值。

    @discardableResult 属性可以帮我们消除因方法返回值未被使用而出现的 警告 或 下划线。

    虽然它是 Swift 中的一个小功能,但最好也了解下。

    何时使用

    考虑是否使用 @discardableResult 属性是一件比较重要的事,因为它可以消除这一类的 警告。

    Result of call to ‘updateName’ is unused
    

    如果整个项目中总是出现这类 警告 的话,也是挺讨厌的。

    但是,也并不是说总是加 @discardableResult 属性就是一个明智的选择。上述示例中,最好还是让用户处理下 APIProvider 方法的返回值比较好一些。

    enum APIProvder {
        static func updateName(_ name: String) -> Result<User, Error> {
            // .. Handle API endpoint, example result:
            return .success(User(name: name))
        }
    }
    

    如代码所示,返回结果也可能是一个 error ,它会告诉用户出错了。所以,是否需要使用 @discardableResult 属性主要是取决于是否需要处理返回的结果。

    如何使用

    上述示例中,如果不使用 @discardableResult 属性的话,需要通过 下划线 才能消除 警告。

    final class UpdateNameViewController {
        func didEnterName(_ name: String) {
            /// The underscore makes the warning go away.
            _ = APIProvder.updateName(name)
        }
    }
    

    但是,整个项目中过多的 下划线 看起来并不简洁。因此,这种情况下最好还是使用 @discardableResult 关键词。

    enum APIProvder {
        @discardableResult static func updateName(_ name: String) -> Result<User, Error> {
            // .. Handle API endpoint, example result:
            return .success(User(name: name))
        }
    }
    

    总结

    @discardableResult 属性可能很少被人熟知,但是对于想消除方法返回值未被使用的 警告 来说的话,该属性还是很有用的,只需要在对应方法前添加 @discardableResult 属性即可。但是,还是要考虑是否真的需要忽略该类 警告,因为有些情况下及时处理返回结果可能是一种更好的解决方案。

    相关文章

      网友评论

          本文标题:iOS Swift Vapor 关于 解析 Swift 中的 @

          本文链接:https://www.haomeiwen.com/subject/boyenltx.html