Swift 结构可以自我删除吗?
Can Swift structs self-delete?
考虑以下几点:
struct MiniString {
private(set) var value: String
init(_ value: String) {
if value.count < 17 {
self.value = value
} else {
selfDeleteSomehow()
}
}
}
在其他地方可以这样实例化:
var ms: MiniString? = MiniString("This string is too long to be accepted")
print(ms) // prints 'nil'
上下文:我的具体用例是协议中的 func 声明,该协议 return Double
介于 0.0 和 1.0 之间,但没有更高或更低,例如:
protocol DoubleBetweenZeroAndOneProtocol {
func getResult() -> DoubleBetweenZeroAndOne
}
您可以使用可失败初始化器:
struct MiniString {
var value: String { return value_ }
private let value_: String
init?(_ seedValue: String) {
if seedValue.count < 17 {
value_ = seedValue
} else {
return nil
}
}
}
考虑以下几点:
struct MiniString {
private(set) var value: String
init(_ value: String) {
if value.count < 17 {
self.value = value
} else {
selfDeleteSomehow()
}
}
}
在其他地方可以这样实例化:
var ms: MiniString? = MiniString("This string is too long to be accepted")
print(ms) // prints 'nil'
上下文:我的具体用例是协议中的 func 声明,该协议 return Double
介于 0.0 和 1.0 之间,但没有更高或更低,例如:
protocol DoubleBetweenZeroAndOneProtocol {
func getResult() -> DoubleBetweenZeroAndOne
}
您可以使用可失败初始化器:
struct MiniString {
var value: String { return value_ }
private let value_: String
init?(_ seedValue: String) {
if seedValue.count < 17 {
value_ = seedValue
} else {
return nil
}
}
}