加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift带默认值的可选变量赋值(双重问号)

发布时间:2020-12-14 06:06:33 所属栏目:百科 来源:网络整理
导读:所以我试图做 let foo = dict["key"] as? String ?? "empty"var bar = some_func(string: foo!) 和XCode 6抱怨“后缀的操作数’!应该有可选类型;类型是’String’“在第二行。 如果我将第一行更改为 let foo: String? = dict["key"] as? String ?? "empty"
所以我试图做
let foo = dict["key"] as? String ?? "empty"
var bar = some_func(string: foo!)

和XCode 6抱怨“后缀的操作数’!应该有可选类型;类型是’String’“在第二行。

如果我将第一行更改为

let foo: String? = dict["key"] as? String ?? "empty"

错误消失。

这是一种缺点还是我只是做错了什么?

无聚结算符a? b是一个捷径
a != nil ? a! : b

它返回左操作数展开或右操作数。所以foo的类型是String,第二行应该是

var bar = some_func(string: foo)

没有感叹号,因为foo不是可选的,不能被解开。

(如果将第一行更改为

let foo: String? = dict["key"] as? String ?? "empty"

那么右边的结果再次被包装到可选字符串中,并且需要以在第二行中打开。它使错误消失,但这可能不是你想要的。)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读