Swift 为什么可选不给出警告或要求强制展开?

Swift 为什么可选不给出警告或要求强制展开?,swift,optional,forceunwrap,Swift,Optional,Forceunwrap,请分享你对此的看法。但当我在项目中使用optionals时,它通常会给人一种好战的感觉 '表达式是否从字符串隐式强制?对于任何',这主要是由于类型推断。在这里: a被推断为String类型?,因为这是右边表达式的类型,不是吗 let a = obj2.optVar 警告表达式是从字符串隐式强制的吗?当您试图将可选值放入类型为Any的变量中时,会出现to Any“,如下所示: let a: String = obj2.optVar // error! 只有在obj2是可选的情况下,才能获得强制

请分享你对此的看法。但当我在项目中使用optionals时,它通常会给人一种好战的感觉 '表达式是否从字符串隐式强制?对于任何'

,这主要是由于类型推断。在这里:

a
被推断为
String类型?
,因为这是右边表达式的类型,不是吗

let a = obj2.optVar
警告
表达式是从字符串隐式强制的吗?当您试图将可选值放入类型为
Any
的变量中时,会出现to Any“
,如下所示:

let a: String = obj2.optVar // error!

只有在obj2是可选的情况下,才能获得强制展开。因为
let
是一个常量,不能再次指定。所以编译器要确保
optVar
肯定有一些值。如果您将
a
视为可选警告,则警告将不存在。+1,可能最好显示它也可以被分配
optional
type like
let anyOptional:optional=obj2.optVar
// basically this:
let a: Optional<String> = obj2.optVar
let a: String = obj2.optVar // error!
let a: Any = obj2.optVar // warning!