我目前有这样的功能......
// this is a property
var currentString: String = ""
func doSomething() {
let newString: String = goGetANewString()
guard newString != currentString else {
return
}
currentString = newString
}
但我发现我在newString
之外创建guard
时有点奇怪。
如果我将其移到guard
,那么它会抱怨它需要是可选的。
有没有办法在newString
语句中创建guard
并检查条件?
理想情况下,我喜欢这样的东西,但就像我说的那样,它不会这样。
func doSomething() {
guard let newString: String = goGetANewString(), newString != currentString else {
return
}
currentString = newString
}
答案 0 :(得分:7)
"技巧"是guard case
使用value-binding pattern作为作业:
func doSomething() {
guard case let newString = goGetANewString(), newString != currentString else {
return
}
currentString = newString
}
答案 1 :(得分:-1)
在展开可选值时使用Guard let。你的不可选。
func doSomething() {
let newString: String = goGetANewString()
if newstring != currentstring {
currentstring = newstring
} }
应该可以正常工作。