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
        }
    }
}