知识卡片
问号叹号的四种语义
内容
”?“与”!“在 Swift 中会随出现位置改变含义,同一个符号承载两套不同语义:”?“跟在类型名后 表示这是对应类型的[[可选值类型的设计动机|可选]]包装(如 String?),跟在实例名后则表示 可选链调用;”!“跟在类型名后表示隐式解析(用起来像非可选,但底层仍是可选),跟在实例名后 表示对可选值的强制拆包,若此时值为空会直接崩溃。发散:这种”位置决定语义”的设计对初学者 不友好,容易把类型声明处的问号和调用处的问号混为一谈,实质上应该按”修饰对象是类型还是 实例”这一个维度去区分,而不是死记四种用法。
参考来源
《Swift 4从零到精通iOS开发》第2章《量值与基本数据类型》