Optional是以enum和泛型为基础的高阶类型
结论:1、optionals使用时需要检查;2、可以通过!+赋值语句转化为非optionals。
Optional-Generic Enumeration
enum
Optional<T> : LogicValue, Reflectable {
case
None
case
Some(T)
init()
init(_ some: T)
/// Allow use in a Boolean context.
func getLogicValue() -> Bool
/// Haskell's fmap, which was mis-named
func map<U>(f: (T) -> U) -> U?
func getMirror() -> Mirror
}
A type that represents either a wrapped value or nil
, the absence of a value.
The types of shortForm
and longForm
in the following code sample are the same:
let shortForm: Int? = Int("42")
let longForm: Optional<Int> = Int("42")
Optionals
?!
You use optionals in situations where a value may be absent. An optional represents two possibilities: Either there is a value, and you can unwrap the optional to access that value, or there isn’t a value at all.
optionals indicate that a constant or variable is allowed to have “no value”. Optionals can be checked with an if
statement to see if a value exists, and can be conditionally unwrapped with optional binding to access the optional’s value if it does exist.
let possibleString: String? = "An optional string."
let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // requires an exclamation mark
我思故我在