在 Swift 中更改 guard 语句中的变量?
Change variables in guard statement in Swift?
我有如下所示的保护语句,如果结果不正确,我需要更改一个变量
func setGif() {
var animalName = (String(format: "%03d", self.animal.speciesId!))
guard animal.isDefault! == true else {
animalName = animalName + "-merg"
return
}
let gif = UIImage(gifName: animalName)
self.gifIBO.setGifImage(gif, manager: gifManager)
gifIBO.contentMode = UIViewContentMode.center
}
这样做会显示真值的 gif,而不是假值的 gif。如果守卫结果为假,我需要它用新值搜索 gif 名称。我在这里做错了什么?
这是对 guard
的不当使用。 guard
退出当前作用域,而你不想那样做;你想继续前进。因此,只需使用旧的 if
。 (此外,永远不要将 Bool 与 true
作为条件进行比较;Bool 是 条件。)
if animal.isDefault! {
// it's true, do one thing
} else {
// it's false, do a different thing
}
在你的情况下,你可能只需要 if
:
var animalName = (String(format: "%03d", self.animal.speciesId!))
if !(animal.isDefault!) {
animalName += "-merg"
}
let gif = UIImage(gifName: animalName)
这里不用守卫。如果 isDefault 为 nil,也可以使用 animal.isDefault == .some(true)
来减少崩溃的可能性:
func setGif() {
var animalName = (String(format: "%03d", self.animal.speciesId!))
if animal.isDefault == .some(true) else {
animalName = animalName + "-merg"
}
let gif = UIImage(gifName: animalName)
self.gifIBO.setGifImage(gif, manager: gifManager)
gifIBO.contentMode = .center
}
我有如下所示的保护语句,如果结果不正确,我需要更改一个变量
func setGif() {
var animalName = (String(format: "%03d", self.animal.speciesId!))
guard animal.isDefault! == true else {
animalName = animalName + "-merg"
return
}
let gif = UIImage(gifName: animalName)
self.gifIBO.setGifImage(gif, manager: gifManager)
gifIBO.contentMode = UIViewContentMode.center
}
这样做会显示真值的 gif,而不是假值的 gif。如果守卫结果为假,我需要它用新值搜索 gif 名称。我在这里做错了什么?
这是对 guard
的不当使用。 guard
退出当前作用域,而你不想那样做;你想继续前进。因此,只需使用旧的 if
。 (此外,永远不要将 Bool 与 true
作为条件进行比较;Bool 是 条件。)
if animal.isDefault! {
// it's true, do one thing
} else {
// it's false, do a different thing
}
在你的情况下,你可能只需要 if
:
var animalName = (String(format: "%03d", self.animal.speciesId!))
if !(animal.isDefault!) {
animalName += "-merg"
}
let gif = UIImage(gifName: animalName)
这里不用守卫。如果 isDefault 为 nil,也可以使用 animal.isDefault == .some(true)
来减少崩溃的可能性:
func setGif() {
var animalName = (String(format: "%03d", self.animal.speciesId!))
if animal.isDefault == .some(true) else {
animalName = animalName + "-merg"
}
let gif = UIImage(gifName: animalName)
self.gifIBO.setGifImage(gif, manager: gifManager)
gifIBO.contentMode = .center
}