我想知道如何实现Swift(Int,Float ...)中的值类型来支持可选绑定("?").我假设这些值类型没有在堆上分配,而是在堆栈上分配.那么,它们是否依赖某种指向可能为null的堆栈的指针,或者底层struct是否包含布尔标志?
Ash*_*lls 13
Optionals enum在Swift 中实现为类型.
有关如何完成此操作的示例,请参阅Apple的Swift Tour:
enum OptionalValue<T> {
case None
case Some(T)
}
Run Code Online (Sandbox Code Playgroud)
Ugo*_*ino 13
Swift从昨天开始就是开源的.您可以在GitHub上看到实现:https://github.com/apple/swift/blob/master/stdlib/public/core/Optional.swift
public enum Optional<Wrapped> : ExpressibleByNilLiteral {
case none
case some(Wrapped)
public init(_ some: Wrapped) { self = .some(some) }
public init(nilLiteral: ()) {
self = .none
}
public var unsafelyUnwrapped: Wrapped {
get {
if let x = self {
return x
}
_debugPreconditionFailure("unsafelyUnwrapped of nil optional")
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3040 次 |
| 最近记录: |