作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如何更改枚举的特定关联值
enum Origin {
case search(searchTerm: String, filtered: Bool)
case category(categoryName:String, subcategoryName:String)
}
@objc class GameSession: NSObject
{
var gameOrigin: Origin?
...
@objc func setIsSearchFiltered(filtered:Bool)
{
if (<gameOrigin is of type .search?>)
{
self.gameOrigin = <change "filtered" associated value to new value>
}
}
....
}
This question with answer ,不幸的是,最近没有帮助我。
最佳答案
您只能为变量分配一个新的枚举值。如 Can I change the Associated values of a enum? ,可以在 switch 语句中检索当前值的关联值,具有将关联值绑定(bind)到局部变量的案例模式。
不需要当前关联的 filtered
值,因此我们可以在该位置使用通配符模式 _
。
由于 var gameOrigin: Origin?
是可选的,我们需要一个带有尾随问号的“可选模式”。
switch gameOrigin {
case .search(let searchTerm, _)?:
gameOrigin = .search(searchTerm: searchTerm, filtered: filtered)
default:
break
}
在带有 case
和 pattern 的 if 语句中也可以做同样的事情匹配:
if case .search(let searchTerm, _)? = gameOrigin {
gameOrigin = .search(searchTerm: searchTerm, filtered: filtered)
}
关于swift - 更改枚举 Swift 的关联值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52535970/
我是一名优秀的程序员,十分优秀!