我用x,y和z替换了我的代码。 目前我的代码运行如此,但我有很多行来检查x。有没有办法代替使用这个
if x != y && x != z
使用类似的东西
if x != y,z
抱歉,我应该更好地解释一下。这是一段使用包含的更新代码,非常有用,谢谢!
if contactCreation.checkAllowed(newContact.contactDetails){
if{contactCreation.blockedCreation.contains(newContact.contactDetails){
watchList.addAttempt(newContact.contactDetails)
}
}else{
newAccount.showReasons()
}
我想我的问题更多的是有没有办法检查x是否为y,如果x是z,但如果x是y + z则没有。基本上我想打电话
if x != y && x != z && x != d && != e
无需在一个if语句中每次都获取x。 所以像这样
if x != y && != z && != d && != e
感谢所有的帮助!
答案 0 :(得分:1)
稍短的版本是为模式匹配运算符(~=
)添加重载:
func ~=<T: Equatable>(pattern: [T], value: T) -> Bool {
return pattern.contains(value)
}
if !([y,z] ~= x) {
}
如果该表达式看起来有点笨拙且你写了很多,你可以定义自己的运算符:
infix operator !!= : ComparisonPrecedence
func !!=<T: Equatable>(lhs: T, rhs: [T]) -> Bool {
return !rhs.contains(lhs)
}
if x !!= [y,z] {
}
答案 1 :(得分:0)
您可以使用数组聚合和contains
方法重写此条件,如下所示:
if ![y, z].contains(x) {
...
}
当x
是一个简单变量时,这没什么用,但是当x
是复杂表达式时,它可以删除一些代码重复。
答案 2 :(得分:0)
我不会根据您为代码显示的内容提出建议,但您可以使用元组:
let testCase:(String,String) = ("hello","world")
if x != testCase {
x = ("did not", "match")
}