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