【发布时间】:2015-12-15 05:23:49
【问题描述】:
是否可以检查一个变量是否是可选的,以及它是什么类型的包装?
可以检查一个变量是否是一个特定的可选:
let someString: String? = "oneString"
var anyThing: Any = someString
anyThing.dynamicType // Swift.Optional<Swift.String>
anyThing.dynamicType is Optional<String>.Type // true
anyThing.dynamicType is Optional<UIView>.Type // false
但是是否可以再次检查任何类型的可选?比如:
anyThing.dynamicType is Optional.Type // fails since T cant be inferred
// or
anyThing.dynamicType is Optional<Any>.Type // false
一旦知道你有一个可选的,检索它包装的类型:
// hypothetical code
anyThing.optionalType // returns String.Type
【问题讨论】:
-
无论如何,您不应该将
Optional放入Any。见:How to unwrap an optional value from Any type? -
这可能是一个有效的例子,你可以有一个接受
Any的函数,如果它接收到Optional,它的行为会有所不同。
标签: swift