小编Bap*_*hot的帖子

Swift - 是否有布尔可转换协议或任何其他方式将转换重载到自定义类型?

我创建了一个模仿布尔值的枚举,我希望能够自动将真正的布尔值转换为这个自定义类型。

由于 BooleanLiteralConvertible 协议(见下文),可以为文字布尔值做到这一点。

是否有非文字布尔值的等效协议?或者有没有办法重载as?操作员 ?

enum CustomType {
    case True
    case False
}
extension CustomType : BooleanLiteralConvertible {
    init(booleanLiteral value: BooleanLiteralType) {
        if value {
            self = .True
        } else {
            self = .False
        }
    }
}
func def(a: CustomType) {

}

func test() {
    let a : Bool = true
    def(true) // compiles
    def(a) // does not compile
}
Run Code Online (Sandbox Code Playgroud)

casting ios swift

5
推荐指数
1
解决办法
2445
查看次数

标签 统计

casting ×1

ios ×1

swift ×1