var someString: String? = "a"
someString = "b"
// or someString = nil
Run Code Online (Sandbox Code Playgroud)
条件: someString不是nil和"a"
例:
if someString != nil && someString != "a" {
}
Run Code Online (Sandbox Code Playgroud)
是否可以调整一个?
Swift 3中的正确方法是使用多子句条件:
if let bString = someString, bString != "a" {
print("bString: '\(bString)' is not nil and is different from 'a'")
}
Run Code Online (Sandbox Code Playgroud)
https://github.com/apple/swift-evolution/blob/master/proposals/0099-conditionclauses.md
我认为您的意思是您想在单个逻辑表达式中测试someString != nil and (而不是在 and 中测试两个)。 someString != "a"
不,我认为使用内置运算符不可能做到这一点,但可以实现如下所示的字符串扩展:
extension String {
func isDifferentThan(value: String?) -> Bool {
return value != nil && self != value?
}
}
Run Code Online (Sandbox Code Playgroud)
你可以使用如下:
someString = nil
"a".isDifferentThan(someString) // Return false
someString = "b"
"a".isDifferentThan(someString) // Return true
someString = "a"
"a".isDifferentThan(someString) // Return false
Run Code Online (Sandbox Code Playgroud)
附录:一个更优雅的解决方案是定义您自己的逻辑运算符。我已经使用过!~=,但请随意使用您自己的。
infix operator !~= { associativity left }
func !~= (a: String?, b: String?) -> Bool {
if a == nil || b == nil {
return false
}
return a != b
}
Run Code Online (Sandbox Code Playgroud)
测试如下:
someString = nil
someString !~= "a" // Returns false
someString = "b"
someString !~= "a" // Returns true
someString = "a"
someString !~= "a" // Returns false
someString = nil
someString !~= nil // Returns false
Run Code Online (Sandbox Code Playgroud)
您可以在处理值时对其进行微调nil(例如添加对havingnil和returning的检查true,以防您希望条件“两边都是nil”评估为true)
| 归档时间: |
|
| 查看次数: |
12047 次 |
| 最近记录: |