是否可以同时使用可选链接和零合并?
print("Meeting host: " + meeting.host?.email ?? “No host”)
我想这样做但是我收到错误说我的字符串?没有打开包装。 email
是非可选字符串。
这是否可行,而不必事先打开host
,如果不是,为什么我这样做的尝试不起作用?
答案 0 :(得分:3)
您不必打开它以使其发挥作用。这不是错误发生的原因。毕竟,??
旨在处理此类案件。
由于运算符优先级而发生错误。编译器认为它应首先评估+
,连接两个字符串,然后执行nil-coalescing。它看到第二个操作数没有解开并抱怨。
要使其产生预期结果,请明确告诉编译器首先通过添加括号来评估??
:
print("Meeting host: " + (meeting.host?.email ?? “No host”))
答案 1 :(得分:1)
有一个更简单的解决方案:
class Host {
var email: String?
}
var host: Host? = nil
print("Meeting host: " + String(describing: host?.email))
输出结果为:
会议主持人:nil