![](/img/trans.png)
[英]How can I return true/false in this Alamofire function using Swift?
[英]How can I reduce the number of return false in this Swift func
我感到此函数中的所有“ return false”语句可能都是多余的。 我经常遇到类似的情况。 我想避免任何多余代码的膨胀。
问题:有没有办法减少“ return false”语句的数量并且仍然让函数做同样的事情?
对于上下文,我试图有效地检查UserDefaults中的Int数组,以查看它是否包含特定的整数。
func isItemNumberInList(itemNumber : Int) -> Bool{
if UserDefaults.standard.object(forKey: "myList") != nil{
if var myList : [Int] = UserDefaults.standard.object(forKey: "myList") as? [Int]{
if myList.index(of: itemNumber) != nil {
return true
}else{
return false
}
}else{
return false
}
}else{
return false
}
}
确实是有办法
func isDockNumberInList(dockNumber : Int) -> Bool {
guard let myList = UserDefaults.standard.array(forKey: "myList") as? [Int],
myList.contains(dockNumber) else { return false }
return true
}
要么
func isDockNumberInList(dockNumber : Int) -> Bool {
guard let myList = UserDefaults.standard.array(forKey: "myList") as? [Int] else { return false }
return myList.contains(dockNumber)
}
最简单的解决方案是删除您的第一个if语句,因为由于条件绑定仅在值不为nil时才能成功,所以它是完全多余的。 然后,您还可以将两个内部if语句合并为一个,因为您只关心两者是否为真。
func isItemNumberInList(itemNumber : Int) -> Bool{
if let myList = UserDefaults.standard.object(forKey: "myList") as? [Int], myList.index(of: itemNumber) != nil {
return true
} else {
return false
}
}
else语句可以很好地省略,因为如果if语句的值为true,则该函数将通过返回true退出,因此只有在if语句之前的值为false的情况下,才能return false
表达式。
func isItemNumberInList(itemNumber : Int) -> Bool{
if let myList = UserDefaults.standard.object(forKey: "myList") as? [Int], myList.index(of: itemNumber) != nil {
return true
}
return false
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.