首页 > 解决方案 > Swift 协议在同一行声明多个属性

问题描述

我有一个包含许多共享相同类型和访问器的属性的协议。我想将它们全部声明在同一行,就像使用 Struct 一样,以节省多行垂直代码空间。

是否有任何 Swift 语法可以在单行上或以某种压缩格式声明具有多个相同类型属性的协议?

struct SomeStruct {
    var structA, structB: Int // ok
}

protocol SomeProtocol {
    var protoA: Int         { get } // ok
    var protoB, protoC: Int { get } // error
    var protoD, protoE: Int         // error
    
    // ok, but too verbose
    var protoF: Int { get }; var protoG: Int { get }
}

尝试在同一行声明多个变量会导致两个错误:

具有多个变量的“var”声明不能有明确的 getter/setter

具有隐含类型的变量不能具有隐含的 getter/setter

如果我省略了 getter/setter,则该属性对协议不再有效:

协议中的属性必须有明确的 { get } 或 { get set } 说明符

有没有办法将相同的{ get }应用于多个协议属性?

标签: swiftsyntaxswift-protocols

解决方案



推荐阅读