为了账号安全,请及时绑定邮箱和手机立即绑定

swift中“!”和“?”的区别?

swift中“!”和“?”的区别?

守着星空守着你 2018-08-14 17:01:54
我在这里给roomid赋值不成功,改为“!”又报错!这里是可以的!这是为什么!
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

? 和 ! 都是对一种类型 Optional 操作的语法糖.

官方解释:

“ An optional value either contains a value or contains nil to indicate that a value is missing. Write a question mark (?) after the type of a value to mark the value as optional.”

大概意思是一个 Optional 类型, 可能有值, 也可能等于 nil。你可以使用 ? 去询问。

你也可以使用 ! 去强制解包, 但当 Optional 没有值时, 会 Crash。

一般来说你也可以这样, 去更安(ma)全(fan)的解包

if let value = someOptional { /* 有值, 返回 true */ 

    print("someOptional != nil")

} else { 

    print("someOptional == nil")

}


// 在 Swift 2.0 +, 可以使用 guard 关键字, 去更友好构造代码结构

guard let value = someOptional else { 

    print("someOptional == nil")

    return 

}

print("someOptional value is \(value)")

具体建议参考: Swift 可选值(Optional Values)介绍


查看完整回答
反对 回复 2018-08-19
  • 1 回答
  • 0 关注
  • 773 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信