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

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

概述所以我试图做 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"

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

总结

以上是内存溢出为你收集整理的Swift带默认值的可选变量赋值(双重问号)全部内容,希望文章能够帮你解决Swift带默认值的可选变量赋值(双重问号)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1058736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存