我有以下代码:
for compareValues in [(optionalVal1, optionalVal2), (optionalVal3, optionalVal4)] {
switch compareValues {
case (nil, nil):
break
case (_, nil):
return true
case (nil, _):
return false
case let (lValue, rValue):
return lValue < rValue
}
}
这不编译,最后一行触发了这个错误:
可选类型的值&#39;字符串?&#39;没有打开;你的意思是用吗? &#39;!&#39;或者&#39;?&#39;?
您如何建议在没有强制展开lValue
和rValue
的情况下处理此?
答案 0 :(得分:2)
要打开case语句中的选项,可以使用
"hi bot there"
答案 1 :(得分:0)
鉴于您已经了解case let (lValue, rValue)
声明,您知道他们都是非nil
,您可以安全地强行解开它们:
for compareValues in values {
switch compareValues {
case (nil, nil):
break
case (_, nil):
return true
case (nil, _):
return false
case let (lValue, rValue):
return lValue! < rValue!
}
}