gpt4 book ai didi

swift - 我想制作一个自定义 bool ,它具有 bool 等所有属性,但默认值应该是 "true"而不是 "false"

转载 作者:行者123 更新时间:2023-11-30 13:25:13 25 4
gpt4 key购买 nike

enum MyBool {
case myTrue, myFalse
}

/// A value type whose instances are either `true` or `false`.

extension MyBool {
/// Default-initialize Boolean value to `true`.

init(){ self = .myTrue }
}

extension MyBool : BooleanLiteralConvertible {
static func convertFromBooleanLiteral( value: Bool) -> MyBool {
return value ? myTrue : myFalse
}
}

extension MyBool : BooleanType {
var boolValue: Bool {
switch self {
case .myTrue: return true
case .myFalse: return false
}
}
}
extension MyBool {
// MyBool can be constructed from BooleanType
init(_ v : BooleanType) {
if v.boolValue {
self = .myTrue
} else {
self = .myFalse
}
}
}

问题是 mybool 不符合 BooleanLiteralConvertible 协议(protocol)。谁能指出我正确的方向吗?

最佳答案

符合 BooleanLiteralConvertible 需要添加一个接受 BooleanLiteralType 又名 Bool 的初始值设定项。对示例进行稍微修改后的版本,符合 BooleanLiteralConvertibleBooleanType:

enum MyBool: BooleanLiteralConvertible, BooleanType {
case myTrue
case myFalse

var boolValue: Bool {
return self == .myTrue
}

init() {
self = .myTrue
}

init(booleanLiteral value: Bool) {
self = value ? .myTrue : .myFalse
}
}

关于swift - 我想制作一个自定义 bool ,它具有 bool 等所有属性,但默认值应该是 "true"而不是 "false",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295727/

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