我想要一个比较[String]的函数?用[String]?哪里,两者或两者都不是。如果两者都是nil
,则函数返回true
是否存在我可以避免检查值等于nil的符号?
此:
func compare_colours(a1:[String]?, a2:[String]?) -> Bool {
return a1 == a2
}
在Swift中无效,因为我需要先添加!
:
return a1! == a2!
答案 0 :(得分:0)
if let a1Unwrapped = a1{
if let a2Unwrapped = a2{
return a1Unwrapped == a2Unwrapped
}
}
if (a1 == nil && a2 == nil){
return true
}
return false
答案 1 :(得分:0)
我更喜欢使用guard
而非if
语句,因此我可以避免使用pyramid of doom:
func compare_colours(a1:[String]?, a2:[String]?) -> Bool {
if a1 == nil && a2 == nil { return true }
guard let unwrapped1 = a1 else { return false }
guard let unwrapped2 = a2 else { return false }
return unwrapped1 == unwrapped2
}
您无需检查是否为零。相反,您可以检查可选枚举是否为.None:
switch (a1, a2) {
case (.None, .None): print("Both unset Optional")
}
无论哪种方式,你必须做同样的基本事情,检查nil / .None。有关其工作原理的详细信息,请阅读以下答案:https://stackoverflow.com/a/33209762/887210
答案 2 :(得分:-1)
或者只使用可选的空格,您可以匹配所有场景。
func compare_colours(a1:[String]?, a2:[String]?) -> Bool {
return a1 ?? [""] == a2 ?? [""]
}